/bin/dash: $1 が数値であることを確認する

/bin/dash: $1 が数値であることを確認する

/bin/dashで$ 1が整数であることを確認する最善の方法は何ですか?

Bashでは、次のことができます。

[[ $1 =~ ^([0-9]+)$ ]]

しかし、これはPOSIXと互換性がないようで、ダッシュはそれをサポートしていません。

ベストアンサー1

以下は整数(正または負)を検出し、dashPOSIXの両方で動作します。

オプション1

echo "$1" | grep -Eq '^[+-]?[0-9]+$' && echo "It's an integer"

オプション2

case "${1#[+-]}" in
    ''|*[!0-9]*)
        echo "Not an integer" ;;
    *)
        echo "Integer" ;;
esac

または:(nop)コマンドを少し使用してください。

! case ${1#[+-]} in *[!0-9]*) :;; ?*) ! :;; esac && echo Integer

おすすめ記事