Bashで位置パラメータに値を割り当てるにはどうすればよいですか? デフォルトのパラメータに値を割り当てたい:
if [ -z "$4" ]; then
4=$3
fi
4 がコマンドではないことを示します。
Bashで位置パラメータに値を割り当てるにはどうすればよいですか? デフォルトのパラメータに値を割り当てたい:
if [ -z "$4" ]; then
4=$3
fi
4 がコマンドではないことを示します。
set
ビルトインは、位置パラメータを設定する唯一の方法です
$ set -- this is a test
$ echo $1
this
$ echo $4
test
は、--
オプションのように見えるものから保護します (例: -x
)。
あなたの場合、あなたが望むかもしれません:
if [ -z "$4" ]; then
set -- "$1" "$2" "$3" "$3"
fi
しかし、おそらく次のようにもっと明確になるでしょう
if [ -z "$4" ]; then
# default the fourth option if it is null
fourth="$3"
set -- "$1" "$2" "$3" "$fourth"
fi
$#
をテストする代わりに、パラメーター数を確認することもできます-z
。
4 番目のパラメーターを使用してスクリプトを再度呼び出すことで、必要なことを行うことができます。
if [ -z "$4" ]; then
$0 "$1" "$2" "$3" "$3"
exit $?
fi
echo $4
上記のスクリプトを次のように呼び出すと、次のよう./script.sh one two three
に出力されます。
三