修正する
この質問にはすでに答えがあります。: ...
Bashスクリプトで私が経験した難しいことの1つは、変数拡張を再帰的に使用することです。 しかし、私は[ChatGPTを介して]位置パラメータ値を参照するために間接置換を使用できることを発見しました。 linkerArgs+=("${!i}") ただし、文字列置換を使用すると、論理的に拡張を再帰的に使用できます。 "${x// /$newChar}" bashインタプリタが配列に項目を割り当てるコンテキストで使用されている場合、後者の型の拡張(括弧内のドル記号のみ)を「無効な置換」として扱いますが、文字列置換では使用時に処理しないのはなぜですか? ...
説明する: variable="Something that it holds" それから echo "$variable"出力されます: それが含んでいる内容 しかし、私もそうだとしましょう。 var2="variable"; echo "\$$(echo $var2)" $variable 代わりに:何が含まれているのかを出力します。 ここでUnixのどの機能が機能しているかを教えてくれる人はいますか? ...
次の間接的な操作を実行しようとしています。 host_1=(192.168.0.100 user1 pass1) host_2=(192.168.0.101 user2 pass2) hostlist=( "host_1" "host_2" ) for item in ${hostlist[@]}; do current_host_ip=${!item[0]} current_host_user=${!item[1]} current_host_pass=${!item[2]} echo "IP: $current_host_ip User: $cu...
したがって、次のように間接拡張によって一般パラメータの有無をテストできることがわかります。 foo=1 bar=foo (( ${(P)+bar} )) && print "$bar exists" 以下を実行して、連想配列にキーが存在するかどうかをテストできることを知っています。 foo=([abc]=1) (( ${+foo[abc]} )) && print "abc exists" しかし、2つを組み合わせて、間接拡張によってキーが連想配列に存在するかどうかをテストする方法はわかりません。 evalを使用し...
Bashでは、2つの方法で可変間接拡張を実行できることを知っています。 使用declare:declare -n foo=bar 拡張機能を使用してください${!..}。 私たちは2つを組み合わせることができます: declare -n foo=SHELL bar=foo echo ${!bar} 以下を提供します。 /bin/bash より多くのレベルに拡張できますか? ほとんどは難読化されたコードを書くことです。私の友人の中には、これをやろうとすることに挑戦しています。 ...
インデックスとうまく機能するように見える次の例を見てください0。 $ a1=(1 2 3) $ a2=(a b c) $ for x in a1 a2; do echo "${!x}"; done 1 a $ for x in a1 a2; do echo "${!x[0]}"; done 1 a ただし、索引付けを使用すると、1何も印刷されません。 $ for x in a1 a2; do echo "${!x[1]}"; done 配列はそれ自体で大丈夫です。 $ echo "${a1[1]} ${a2[1]}" 2 b 編集 ...
#!/bin/bash mat_1=(ServerAB ServerFR ServerPE ServerAM ServerHU) st="mat_1"; indirect_var='${'${st}'[@]}' #(Please, see the "--Desired Ouput Section--" in comments) #----- What is Hapenning now at output ---- echo Values of "mat_1 ": ${mat_1[@]} echo Indirect value of "mat_1": ${...