インデックス配列を添え字で書くのは算術拡張ですか?

インデックス配列を添え字で書くのは算術拡張ですか?

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 算術拡張

式のすべてのトークンは、パラメータと変数の拡張、コマンドの置き換え、および引用符の削除を受けます。

おすすめ記事