2016-04-23 10 views
0

bashシェルスクリプトの配列をループしながら、配列インデックス変数にアクセスしたい。bashシェルスクリプトループから配列インデックス変数にアクセスしますか?

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

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

foo 
bar 
baz 
bat 

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

0 
1 
2 
3 

どのように私は私のスクリプトを変更しませんこれを達成するには?

答えて

2

することはでき間接参照構文(since Bash 3)を使用して索引をループ:詳細については

#!/bin/bash 

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

How to iterate over associative arrays in Bash

+0

+1と受け入れました。しかし、ここで簡単に説明してください*なぜ*そのソリューションは動作しますか?またはいくつかのドキュメントへのリンク? – Mowzer

+0

私の答えを更新しました。 – SLePort

関連する問題