#author("2018-12-27T10:59:39+09:00","","") #author("2021-09-11T09:35:07+09:00","","") #navi(../) * exprを使った数値(整数)チェックのサンプルシェルスクリプト [#g77c5b4d] 本資料では、数値チェック(整数のみ)と英字チェックのサンプルシェルスクリプトを以下に記します。~ bashにて動作確認を行いました。 本ソースは以下のリンク先で公開しています。~ https://github.com/sutot/sakura_common.sh #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) #contents * 関連記事 [#c3410927] -[[シェルの$特殊変数の一覧および説明>逆引きシェルスクリプト/$特殊変数の一覧および説明]] -[[if文のサンプルシェルスクリプト・数値比較編>逆引きシェルスクリプト/if文のサンプルシェルスクリプト・数値比較編]] * 数値(整数)チェック [#d538b2be] 以下の数値チェックは、exprコマンドを使用しています。~ (sedでも実現できますね…) 尚、exprの計算結果が0の場合は、''$? に 1 が返却''されます。~ $ expr 1 - 1 0 $ echo $? 1 よって、以下のサンプルスクリプトでは、 -lt 2 となっています。 * 数値(整数)サンプルスクリプト [#j175af34] 数値(整数のみ)の場合は、0を返却し、数値(整数)以外の場合は1を返却します。 IsNumeric() { if [ ! -n "$1" ]; then return 1 # $1 is empty fi expr "$1" + 1 > /dev/null 2>&1 if [ ! $? -lt 2 ]; then return 1 fi return 0 } ** 実行例 [#s978a303] 実際に動作させたときの出力です。~ 上記のスクリプトを端末に貼り付け(Paste)て実行してます。 - サンプルスクリプトをペーストしました $ IsNumeric() { > if [ ! -n "$1" ]; then > return 1 # $1 is empty > fi > expr "$1" + 1 > /dev/null 2>&1 > if [ ! $? -lt 2 ]; then > return 1 > fi > return 0 > } - 引数なしで実行 $ IsNumeric $ echo $? 1 - 引数に100を指定 $ IsNumeric 100 $ echo $? 0 -引数に-100を指定 $ IsNumeric -100 $ echo $? 0 -引数に英字を指定 $ IsNumeric abc $ echo $? 1 -小数を指定 $ IsNumeric 1.1 $ echo $? 1 上記の通り、整数の場合は、0を返却。~ 整数以外の場合は、1を返却しています。 以上、exprを使った数値チェックのサンプルシェルスクリプトでした。 #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)