私はこの1つで私の頭を傷つけている、それについて話しているbashのリファレンスを見つけることができません。
host_color=${uphost}_host_color
host_color=${!host_color}
次のコードで
は、2行目は何をしているのですか?この場合、!演算子は何をしますか? B ash manualから私はこの1つで私の頭を傷つけている、それについて話しているbashのリファレンスを見つけることができません。
host_color=${uphost}_host_color
host_color=${!host_color}
次のコードで
は、2行目は何をしているのですか?この場合、!演算子は何をしますか? B ash manualからこれはindirect referencesの略語です。
$ foo=bar
$ bar=bas
$ echo ${!foo}
bas
一見同様の構成${!foo*}はに名前fooので始まるすべての変数の名前を以下のように拡張します
$ foo1=x
$ foo2=y
$ echo ${!foo*}
foo1 foo2
:(!)
パラメータの最初の文字が感嘆符である場合は、変数間接の レベルが導入されます。 Bashは の値を残りのパラメータから形成された変数を 変数の名前として使用します。この変数は展開され、その値はパラメータ自体の値ではなく、置換の残りの部分に使用されます。 これは間接的な拡張と呼ばれます。例外は、以下で説明する$ {!prefix *}と$ {!name [@]}を展開した です。
は$ {!}接頭辞と同じ$ {!プレフィックス*}のですか? –
オリバー氏の投稿には「*」や「@」がないので、マンページの次のエントリーと思っていました: '$ {!name [@]}' '** name **が配列** name **が配列でない場合、** name **が設定されている場合は0に展開されます。 –
@Olivier:いいえ、それらは同じではありません。私はbashマニュアルから関連するビットを追加しました。 –
あなたはそれを持って、ありがとう。これで完全な意味合いが得られます。host_color = green、緑色は色分けされた変数です。 –
+1オリバーのコードが何をしているかのようです。基本的に 'host_color'を' $ {uphost} _host_color'の値に設定します。 '$ {$ {uphost} _host_color} 'に設定しても変わりません。 –