シェルスクリプトで対象の変数が数値かどうか判断するための備忘メモです
シェルスクリプトでは型という概念は存在しなさそうなので、代わりに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