2

こんばんは、引数が数値かどうかを示すスクリプトを書きたいのですが、次のようになります。

a: 4: Syntax error: "(" unexpected (expecting ")")

最初は次のように試しました。

    #!/ bin / bash
    ケース「$1」
        0x *)echo hex ;;
        '' | * [!0-9] *)echo dec ;;
        *)echo wtf ;;
    esac

後で私はこのビットを見つけました:

    もしも ![["$ yournumber" =〜^ [0-9] + $]]; それから
       exec>&2; echo "エラー:数値ではありません"; 出口1
    fi

まあ、それらのどれも機能しません、私は助けを求めます!

4

2 に答える 2

2

どういう意味かわかりません*[!0-9]*が、次のように思えます。

#!/bin/bash

shopt -s extglob

case "$1" in
    '')
        echo missing ;;
    0x+([0-9a-fA-F]))
        echo hex ;;
    +([0-9]))
        echo dec ;;
    *)
        echo wtf ;;
esac

extglobより複雑なパターンマッチを使用して、「16進数」と「12進数」の数値を検索できることに注意してください。これに関する情報は、bashのmanページにあります。

于 2012-11-07T16:16:59.160 に答える
0

これをベースとしてはどうですか。

expr >>/dev/null "$i" : '0[xX][0-9a-fA-f][0-9a-fA-F]$' && echo hex; expr >>/dev/null "$i" : '0[0-7]$' && echo oct; expr >>/dev/null "$i" : '[0-9][0-9]*$' && echo dec;

于 2017-12-06T22:17:54.693 に答える