web-dev-qa-db-ja.com

Linux Shellはリストのデータ構造をサポートしていますか?

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

python、python、Ruby、javascriptなどのスクリプト言語サポートリストの構造をたくさん知っているので、Linuxシェルについてはどうですか?

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

for i in list:
do
     print i
done

私は最初にリストを初期化します、例えば:

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

それから繰り返します

シェルスクリプトのプログラミング時にそれは可能ですか?

45
hugemeow

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

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
75
chepner

リストを作成するには、単にそれを行う

colors=(red orange white "light gray")

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

11
DonCallisto