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