私はbashで見積もっています。 私はコード引用符で囲まれた変数展開の引用符がbashでうまく動作するのはなぜですか?
unset unset_var
test_var="${unset_var:-"abc"}"
echo "test_var = $test_var"
tset_var = abc
私の質問は、ラインから来て、 "$ {unset_var: - " 得た私は二つの方法、
最初の方法で行をinterupted ABC "}"
をされます
"${unset_var:-"abc"}" =
(quoted string: "${unset_var:-") +
(unquoted string: abc) +
(quoted string: "}")
第二の方法は、
"${unset_var:-"abc"}" =
("${}") + (abc:-"abc")
です
最初の方法は私には直感的です。
第二の方法は、
"$(command "aug")" # quote in sub-shell is independent from one in parent-shell
のように私はbashのマニュアルにこの質問の指示を見つけることができなかった、親シェルからサブシェルで独立の引用に似ています。
どのように動作するのかわかっている方は、教えてください。ありがとうございました。フォーム
name=value
value
の任意の代入文で
と同等です
に相当し、美しい説明いただきありがとうございます。一つのことを私に確認させてください。 test_var = "$ {unset_var: - " abc "}" - > test_var = "abc"上記の割り当て時に見積の削除が適用されます。その結果、test_var = abcです。それが正しいか? test_var = "$ {unset_var: - " abc "}"という形式は、form、name = valueと少し異なります。私は些細なことを尋ねているのではないかと心配していますが、二重引用符の削除の仕組みが最初の削除と全く同じかどうかは100%確信できませんでした。ありがとうございました。 – mora
おそらく、割り当て時に、右側の文字列に引用符の削除などの拡張処理が行われている可能性があります。 test_var = "$ {unset_var: - " abc "}"の場合、同じ展開プロセスがその場所の "abc"に適用されます。だから、test_var = "$ {unset_var:-abc}"が正しいかもしれませんし、test_var = "abc"が間違っているかもしれません。 – mora