19

Bashで位置パラメータに値を割り当てるにはどうすればよいですか? デフォルトのパラメータに値を割り当てたい:

if [ -z "$4" ]; then
   4=$3
fi

4 がコマンドではないことを示します。

4

3 に答える 3

35

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

于 2012-12-07T11:56:17.250 に答える
3

4 番目のパラメーターを使用してスクリプトを再度呼び出すことで、必要なことを行うことができます。

if [ -z "$4" ]; then
   $0 "$1" "$2" "$3" "$3"
   exit $?
fi
echo $4

上記のスクリプトを次のように呼び出すと、次のよう./script.sh one two threeに出力されます。

于 2012-12-07T11:58:26.017 に答える