いくつかの代替実施形態のシェルパラメータ

スクリプトを使用する場合は、その最も単純な形式のパラメータ値は、例えば、パラメータの前にドル記号を追加することで、交換する必要があります$i$9
1 ${parameter}
パラメータ名が文字のバックが紛争につながる可能性があるため場合は、例えば、中括弧でパラメータ名を置くことができます。

mv $file ${file}x

コマンド$ファイルは元のファイル名に加えて、Xの後に名前を変更したファイルを指定しました。このコマンドは、次のように記述することはできません。

mv $file $filex

シェルの値が2番目のパラメータとしてFILEXますので。
アクセスパラメータがより大きいまたは10点の位置に等しいようなブレース、デジタルする必要があります${11}
2. ${parameter:-value}
パラメータがその値に空でない場合、この構造手段は、それ以外の場合は値に置き換えられます。例えば:

echo Using editor ${EDITOR:-/bin/vi}

EDITORが空でない場合、シェルはそれ以外の場合は、の/ binに/ viの値に置き換えられ、その値に置き換えられます。これは、スクリプトと同じ効果です。

if [ -n "$EDITOR" ]
then
    echo Using editor $EDITOR
else
    echo Using editor /bin/vi
fi

次のように端子構造で、この試験です。

[root@localhost-test ~]#EDITOR=/bin/ed
[root@localhost-test ~]#echo ${EDITOR:-/bin/vi}
/bin/ed
[root@localhost-test ~]#EDITOR=
[root@localhost-test ~]#echo ${EDITOR:-/bin/vi}
/bin/vi
[root@localhost-test ~]#

3 ${parameter:=value}
パラメータが空である場合、値を使用するだけでなく、それはまた、パラメータに割り当てられている:これは、ことを除いて前と同様の構造です。しかしない位置パラメータの割り当てに、このように(つまり、パラメータは数字にすることはできません)。
このような構造の典型的な使用は、値が設定されているかどうかのテストに変数に満ちている、とされていない場合、それは次のように、デフォルト値に設定されます。

${$PHONEBOOK:=$HOME/phonebook}

それはそれ以外の場合は$ HOME /電話帳に設定され、電話帳の値に設定されている場合は、その値が保持されることを意味しています。
置換試行が完了した後、シェルが別の結果を実行するため、前述の実施例は、別のコマンドとしてないことに注意してください。

[root@localhost-test ~]#PHONEBOOK=
[root@localhost-test ~]#${PHONEBOOK:=$HOME/phonebook}
-bash: /root/phonebook: No such file or directory
[root@localhost-test ~]#

このような構造は、別のコマンドとして、多くの場合、ヌルコマンドによって使用されるべきである場合。あなたが書いた場合

: ${PHONEBOOK:=$HOME/phonebook}

交換用のシェルは、まだやるが、何も実装されていません。

[root@localhost-test ~]#PHONEBOOK=
[root@localhost-test ~]#: ${PHONEBOOK:=/HOME/phonebook}
[root@localhost-test ~]#

4 ${parameter:?value}
パラメータが空でない場合、シェルはそれ以外の場合は、シェルが標準エラーに書き込まれた値を入れ、その後、終了(これは、シェルに上陸起こるシステムからログアウトしないであろう)、その値を置き換えます。
あなたが値を省略した場合、書き込み情報へのシェル:

prog:parameter null or not set

以下は、端末上の例です。

[root@localhost-test ~]#PHONEBOOK=
[root@localhost-test ~]#: ${PHONEBOOK:?"NO PHONEBOOK file"}
-bash: PHONEBOOK: NO PHONEBOOK file
[root@localhost-test ~]#: ${PHONEBOOK:?}
-bash: PHONEBOOK: parameter null or not set
[root@localhost-test ~]#

この構造により簡単にプログラムが設定されている変数のセットを必要として、空にされていないかどうかを確認することができます:

: ${TOOLS:?} ${EXPTOOLS:?} ${TOOLBIN:?}

5 ${parameter:+value}
パラメータが空でない場合、この構造は、置換される値は、何が他の置き換え。

[root@localhost-test ~]#PHONEBOOK=1
[root@localhost-test ~]#echo option : ${PHONEBOOK:+"phonebook"}
option : phonebook
[root@localhost-test ~]#PHONEBOOK=
[root@localhost-test ~]#echo option: ${PHONEBOOK:+"phonebook is empty"}
option:
[root@localhost-test ~]#echo :$PHONEBOOK:
::
[root@localhost-test ~]#
公開された46元の記事 ウォン称賛13 ビュー60000 +

おすすめ

転載: blog.csdn.net/luliuliu1234/article/details/80994383