it-swarm-ja.com

bashシェルスクリプトループから配列インデックス変数にアクセスする

Bashシェルスクリプトで配列をループしながら配列インデックス変数にアクセスしたい。

#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${AR[*]}; do
  echo $i
done

上記のスクリプトの結果は次のとおりです。

foo
bar
baz
bat

私が求める結果は次のとおりです。

0
1
2
3

これを実現するためにスクリプトを変更するにはどうすればよいですか?

1
Mowzer

1文字追加:

#!/ bin/bash 
 AR =( 'foo''bar''baz''bat')
 for i in $ {AR [*]}; do←
 echo "$ i" 
完了

(感嘆符を追加します(!)配列拡張へ:${!AR[*]}。)マニュアルページから:

パラメータ拡張


    $ {!名前[@]}
    $ {!名前[*]}
      配列キーのリスト。 If 名前は配列変数であり、で割り当てられた配列インデックス(キー)のリストに展開されます。 名前。場合 名前は配列ではなく、次の場合は0に展開されます 名前が設定され、それ以外の場合はnullになります。いつ @が使用され、展開は二重引用符で囲まれて表示され、各キーは個別のWordに展開されます。