このエントリーをはてなブックマークに追加


exprを使った数値(整数)チェックのサンプルシェルスクリプト

本資料では、数値チェック(整数のみ)と英字チェックのサンプルシェルスクリプトを以下に記します。
bashにて動作確認を行いました。


関連記事

数値(整数)チェック

以下の数値チェックは、exprコマンドを使用しています。
(sedでも実現できますね…)

尚、exprの計算結果が0の場合は、$? に 1 が返却されます。

$ expr 1 - 1
0
$ echo $?
1

よって、以下のサンプルスクリプトでは、 -lt 2 となっています。

数値(整数)サンプルスクリプト

数値(整数のみ)の場合は、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
}

実行例

実際に動作させたときの出力です。
上記のスクリプトを端末に貼り付け(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を使った数値チェックのサンプルシェルスクリプトでした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-11 (土) 09:35:07