#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)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS