BASH スクリプトでの式の説明を手伝ってもらえますか?
${1:-}
あまり見たことがないので、いろいろ試してみます。
echo ${1:-}
echo ${1}
違いがわかりません。
どうもありがとうございました!!!
BASH スクリプトでの式の説明を手伝ってもらえますか?
${1:-}
あまり見たことがないので、いろいろ試してみます。
echo ${1:-}
echo ${1}
違いがわかりません。
どうもありがとうございました!!!
マニュアルページから:
${パラメータ:-単語}
デフォルト値を使用します。パラメータが設定されていないか null の場合、単語の展開が置換されます。それ以外の場合は、パラメーターの値が代入されます。
hereから適応されたほんの小さな例
varName="Aloha"
echo "varName is not empty: the two constructs behave the same"
echo ${varName-Hello World}
echo ${varName:-Hello World}
echo ""
unset varName
echo "varName is unset: they still behave the same way"
echo ${varName-Hello World}
echo ${varName:-Hello World}
echo ""
varName=""
echo "varName is empty: this is where the two differs"
echo ${varName-Hello World}
echo ${varName:-Hello World}
echo ""
basicalli:-
は、変数が空または設定されていない場合は値を変更:
し、設定されていない場合は変更します。
たいした目的はありません。${1-}
が有効になっている場合に関連します。この場合、設定されていない可能性があると予想される値を持つパラメーターが逆参照された場合にエラーがスローされるのを防ぐset -u
のと同様の別のハックです。${1+"$1"}
$ ( f() { printf '<%s> <%s>\n' $# ${1-}; }; set -u; f )
<0> <>
$ ( f() { printf '<%s> <%s>\n' $# $1; }; set -u; f )
-bash: $1: unbound variable
コロンを追加すると、パラメーターが未設定または null の場合に代替が展開されます。どちらの場合でも、展開が引用符で囲まれていない場合、結果は常に引数なしになります (IFS 値に関係なく)。-
Bash のマンページで指定されている不幸な方法のために、人々が theと:-
PE 演算子の違いに気付かないことは珍しくありません。
いつものように、set -u
スクリプトでは決して使用しないことをお勧めします。デバッグに役立つと思う場合は、一時的にのみ使用してください。