Bashのマニュアルで引用すると、次のようになります。
構文を使用して変数を割り当てると、インデックス配列が自動的に生成されます。
name[subscript]=value
下付き文字は、数値として評価する必要がある算術式として扱われます。
はいsubscript
- 算術式または
$((
和を無視))
して算術式だけの算術拡張?
つまり、演算拡張で命令を説明するように、ここに演算拡張のためのステップがあるのでしょうか?
例えば、
$ declare -p myarr
declare -a myarr='([0]="0" [2]="3" [3]="9999")'
$ echo ${myarr[1+2]}
9999
$ echo ${myarr[$((1+2))]}
9999
答え1
算術拡張を使用してコマンドを解釈するなど、[配列添字を使用して]算術拡張の手順はありますか?
はい。
変数拡張:
$ unset -v a
$ declare -p a
-bash: declare: a: not found
$ x=4
$ a[x]=4
$ declare -p a
declare -a a='([4]="4")'
パラメータ拡張:
$ six=six
$ a[${#six}]=3
$ declare -p a
declare -a a='([3]="3" [4]="4")'
コマンドの置換:
$ a[$(echo 9)]=9
$ declare -p a
declare -a a='([3]="3" [4]="4" [9]="9")'
見積もりの削除:
$ a["5"]=5
$ declare -p a
declare -a a='([3]="3" [4]="4" [5]="5" [9]="9")'
$ a['6']=6
$ declare -p a
declare -a a='([3]="3" [4]="4" [5]="5" [6]="6" [9]="9")'
$ a[\7]=7
$ declare -p a
declare -a a='([3]="3" [4]="4" [5]="5" [6]="6" [7]="7" [9]="9")'
3.5.5 算術拡張
式のすべてのトークンは、パラメータと変数の拡張、コマンドの置き換え、および引用符の削除を受けます。
答え2
- インデックス配列を添え字で書くのは算術拡張ですか?
正確に言えば、いいえ、「算術拡張」内の内容と同じ「算術式」ですが$(( ))
。
両方とも数字(またはnull)になるまで式を評価します。