69

この質問は、シェルはセットをサポートしていますか?と同じではありません。

Python、Python、Ruby、JavaScript など、多くのスクリプト言語サポート リスト構造を知っているので、Linux シェルはどうですか?

シェルはそのような構文をサポートしていますか?

for i in list:
do
     print i
done

最初にlist を初期化します。たとえば、次のようになります。

ListName = [ item1, item2, ..., itemn ]

それを繰り返す

シェルスクリプトをプログラミングするときにそれは可能ですか?

4

2 に答える 2

121

リストをサポートしますが、個別のデータ構造としてはサポートしません(現時点では配列を無視します)。

forループは、空白で区切られた値のリスト(一般的な意味で)を、そのリストがどのように作成されたかに関係なく、文字通りかどうかに関係なく繰り返されます。

for i in 1 2 3; do
    echo "$i"
done

またはパラメータ展開を介して:

listVar="1 2 3"
for i in $listVar; do
    echo "$i"
done

またはコマンド置換:

for i in $(echo 1; echo 2; echo 3); do
    echo "$i"
done

配列は、より構造化された値のリストを含めることができる単なる特別なパラメーターであり、各要素自体に空白を含めることができます。違いを比較してください:

array=("item 1" "item 2" "item 3")
for i in "${array[@]}"; do   # The quotes are necessary here
    echo "$i"
done

list='"item 1" "item 2" "item 3"'
for i in $list; do
    echo $i
done
for i in "$list"; do
    echo $i
done
for i in ${array[@]}; do
    echo $i
done
于 2012-09-07T12:10:23.357 に答える
16

リストを作成するには、それを行うだけです

colors=(red orange white "light gray")

技術的には配列ですが、もちろん、すべてのリスト機能を備えています。
pythonリストも配列で実装されています

于 2012-09-07T10:24:51.817 に答える