2012-12-07 24 views
17

Bashの位置パラメータにどのように値を割り当てることができますか?私は、デフォルトのパラメータに値を割り当てたいと思います:位置パラメータへの割り当て

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

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

答えて

29

setビルトインは--は、オプション(例えば-x)のように見えるものから保護し、位置パラメータ

$ set -- this is a test 
$ echo $1 
this 
$ echo $4 
test 

を設定する唯一の方法です。あなたが望むかもしれないあなたの場合

if [ -z "$4" ]; then 
    set -- "$1" "$2" "$3" "$3" 
fi 

が、おそらくあなたも-zのパラメータ数$#代わりのテストで見たいと思うかもしれません

if [ -z "$4" ]; then 
    # default the fourth option if it is null 
    fourth="$3" 
    set -- "$1" "$2" "$3" "$fourth" 
fi 

としてより明確になります。あなたは第四パラメータでもう一度スクリプトを呼び出すことによって、あなたがやりたいことができ

3

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

./script.sh one two three意志の出力のように上記のスクリプトを呼び出す:

+0

を './ $ 0'はスクリプトがPATH経由でアクセスされても動作しません。 '$ /'は '。/ script'と'/usr/local/bin/script'などで動作します。 – msw

関連する問題