LoginSignup
2
1

More than 1 year has passed since last update.

シェルスクリプトで対象の変数が数値かどうか判断する

Posted at

シェルスクリプトで対象の変数が数値かどうか判断するための備忘メモです

シェルスクリプトでは型という概念は存在しなさそうなので、代わりにexprを使って判断する
(例によってもっといい方法があるような気がする、、良い案あればコメント下さい!)

test.sh
#!/usr/bin/bash                                                                                                                                                                                             

function check_if_int(){

    input=${1}

    # check if input is int                                                                                                                                                                                 
    # 0: 式が正しく評価され、評価値が0かnull以外の場合                                                                                                                                                      
    # 1: 式が正しく評価され、評価値が0かnullのとき                                                                                                                                                          
    # 2: 式が不当なとき                                                                                                                                                                                     
    # 3: (GNU版のみ)その他エラーが起こったとき                                                                                                                                                              

    expr "$input" + 0 >&/dev/null
    ret=$?
    if [ $ret -lt 2 ];then
        echo "$input is an int number: ${ret}"
    else
        echo "$input is not an int number: ${ret}"
        return 1
    fi
    return 0
}

check_if_int 1
check_if_int 0
check_if_int 1000000000000000
check_if_int -1
check_if_int 1.1
check_if_int hoge

実行

$ bash test.sh
1 is an int number: 0
0 is an int number: 1
1000000000000000 is an int number: 0
-1 is an int number: 0
1.1 is not an int number: 2
hoge is not an int number: 2

参考

シェルスクリプトで数字かどうか判断する方法(exprだけじゃない)

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1