linux shell支持列表数据结构吗?

时间:2012-09-07 10:20:06

标签: linux bash shell ash

此问题与Does the shell support sets?

不同

我知道很多脚本语言支持列表结构,比如python,python,ruby和javascript,那么linux shell呢?

shell支持这样的语法吗?

for i in list:
do
     print i
done

我首先初始化列表,例如:

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

然后迭代它

在编写shell脚本时可以

吗?

2 个答案:

答案 0 :(得分:73)

它支持列表,但不支持单独的数据结构(暂时忽略数组)。

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

答案 1 :(得分:11)

要制作清单,只需执行此操作

colors=(red orange white "light gray")

技术上是一个数组,但是 - 当然 - 它具有所有列表功能 甚至python列表都是用数组

实现的