表題の通り。方法はいろいろあるだろうが、これが簡単かな、と思うものをメモしておく。
■ 環境
- sh
■ 変数チェック
`expr`で計算をさせ、終了ステータスを確認する。
VALUE=$1
expr "${VALUE} + 1" > /dev/null 2>&1
if [ $? -lt 2 ] ; then
# 数値
echo "number."
else
echo "not number."
fi
`expr`で文字列が渡されると、下記のようなエラーとなる。下記は”aaa”を渡した場合。
expr: not a decimal number: 'aaa'
数値であった場合は正常終了である”0“が返却される。manで”EXIT STATUS”を確認すると下記のようである。
EXIT STATUS
The expr utility exits with one of the following values:
0 the expression is neither an empty string nor 0.
1 the expression is an empty string or 0.
2 the expression is invalid.
となると、条件文は下記でも良いかもしれない。
if [ $? -ne 2 ]
■ 余談
シェルスクリプトを書くときは、気本的に”sh“(ボーンシェル)で書くようにしている。『”sh”で書いておけば大抵の環境で同じように動く』と師匠に教わったから。10年以上前に言われた事を今でも守ってる。
以上。