私は毎年POSIXシェルコードをレビューしています。
私が一つ見つけたかもしれません。奇妙なライン、私は前にそれについてあまり知らなかった。
オリジナル
[ $# -eq 3 ] && exit_code=$3 || exit_code=1
新しいコード - より簡単になりました。
exit_code=${3:-1}
これら2つの方法はまったく同じ結果をもたらしますか?
どのような違いがあるかを詳しく説明できますか?
答え1
これら2つの方法は異なるロジックを使用するようです。
[ $# -eq 3 ] && exit_code=$3 || exit_code=1
これは、そして、もし、位置引数の数()は$#
正確に3に等しく、exit_code
変数は3番目の位置引数の値に等しく設定されます。それ以外の場合と同じに設定する必要があります1
。
exit_code=${3:-1}
これは、3番目の位置引数(または設定されていない場合)exit_code
の値に設定されます。1
以上3つの位置パラメータ。
exit_code
要約すると、位置パラメータの数が3つでない場合、最初のパラメータの数は1に設定され、2番目のパラメータの数は位置パラメータの数とは関係ありません。