REOPEN:パラメータ拡張で算術拡張を実行しますか? [コピー]

REOPEN:パラメータ拡張で算術拡張を実行しますか? [コピー]

もう一度開いてください。ここでは回避策だけでなく、機能しない理由を尋ねているので、これは重複しません。


Bashのマニュアルによると

チルダ拡張、パラメータと変数の拡張算術拡張とコマンドの置き換え(左から右へ)

わかったらhttp://unix.stackexchange.com/a/270324/674正しく「左から右へ」とは、「中括弧拡張、チルダ拡張、パラメータおよび変数拡張、算術拡張およびコマンド置換」が同じ優先順位を持つことを意味します。

では、パラメータ拡張に算術拡張を使用できますか? (つまり、1段階再帰)

そうでなければ、「チルダ拡張、パラメータと変数拡張、算術拡張、コマンド置換(左から右に行われます)」を考えると、パラメータ拡張で算術拡張が機能しないのはなぜですか?

それではどうですか?

例えば、

$ set hello world
$ echo $2
world
$ echo ${$((1+1))}
bash: ${$((1+1))}: bad substitution

私は希望

  • まず、.and$((1+1))に展開してください。${$((1+1))}2
  • それ${2}からworld

ありがとうございます。

ベストアンサー1

evalこれを行うには、間接的に次のものが必要です。

eval echo \${$((1+1))}
index=$((1+1))
echo ${!index}

おすすめ記事