我知道很多脚本语言支持列表结构,比如python、python、ruby和javascript,那么linux shell呢?
shell 支持这样的语法吗?
for i in list:
do
print i
done
我会首先初始化一个列表,例如:
ListName = [ item1, item2, ..., itemn ]
然后迭代它
在编写 shell 脚本时这可能吗?
我知道很多脚本语言支持列表结构,比如python、python、ruby和javascript,那么linux shell呢?
shell 支持这样的语法吗?
for i in list:
do
print i
done
我会首先初始化一个列表,例如:
ListName = [ item1, item2, ..., itemn ]
然后迭代它
在编写 shell 脚本时这可能吗?
它支持列表,但不支持单独的数据结构(暂时忽略数组)。
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
要列出清单,只需这样做
colors=(red orange white "light gray")
从技术上讲是一个数组,但是 - 当然 - 它具有所有列表功能。
甚至python列表都是用数组实现的