Bash 関数から値を返します。

Bash 関数から値を返します。

数値が有効な10桁の場合、1を返す関数があります。

valNum()
{
    flag=1
    if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then
        echo "Invalid Number"
        flag=0
    fi
    return $flag
}

次のように呼び出されます。

if [[ $(valNum $num) -eq 1 ]]; then
      #do something
fi

数値が有効な場合、関数は正しく機能しますが、無効な数値を入力すると構文エラーが表示されます。

ベストアンサー1

@chorobaの答えは正確ですが、この例ではより明確になります。

valNum $num
valNumResult=$? # '$?' is the return value of the previous command
if [[ $valNumResult -eq 1 ]]
then
  : # do something
fi

この例は少し長いですが($valNumResult値の設定とクエリ)、何が起こるのかをより明確に説明します。つまり、valNum()値が返され、その値を照会してテストできます。

追記お願いします。0合計trueをゼロ以外の値で返してくださいfalse。これにより、戻り値を使用して、失敗したケースで「失敗した理由」を示すことができます。

おすすめ記事