bash 条件文でカスタム テスト関数を使用する

bash 条件文でカスタム テスト関数を使用する

またはnumericを返すという bash 関数があります。10

numeric ()
{
  # compute k either 1 or 0
  echo "$k"
}

条件文でこの関数を使用して、変数がvar数値かどうかを確認するにはどうすればよいですか?

答え1

シェルの条件式のコンテキストでは、戻り値の は「成功」または「真」を意味し、ゼロ以外の値は「失敗」または「偽」を意味することに注意してください。そのため、引数が数値の場合に を0返すように関数を調整することをお勧めします。0

「条件文」がif構造であると仮定すると、次のようになります。

if numeric "$var"
then
   # Code if $var is numeric
else
   echo "$var is not numeric"
fi

答え2

リターンを使用する

numeric ()
{
  # compute k either 1 or 0 || return 1
  echo "$k"
  return 0
}

numeric || exit 1

関連情報