与bash中的Perl列表等效的是什么?
时间:2020-03-05 18:57:34 来源:igfitidea点击:
在perl中,只需执行以下操作即可存储和迭代名称列表
my @fruit = (apple, orange, kiwi); foreach (@fruit) { print $_; }
相当于什么呢?
解决方案
回答
for i in apple orange kiwi do echo $i done
回答
像这样:
FRUITS="apple orange kiwi" for FRUIT in $FRUITS; do echo $FRUIT done
请注意,如果水果名称中有空格,则此方法将无效。在这种情况下,请查看此答案,它的便携性稍差,但功能更强大。
回答
既然我喜欢的答案已被接受为正确答案,我现在将进入另一个主题:如何使用" IFS"谋取私利。 :-P
fruits="apple,orange,kiwifruit,dried mango" (IFS=, for fruit in $fruits; do echo "$fruit" done)
我将代码放在方括号中,以便将" IFS"更改隔离到其自己的子流程中;因此,在方括号部分的末尾," IFS"恢复为原来的值。 :-)
回答
bash(与POSIX sh不同)支持数组:
fruits=(apple orange kiwi "dried mango") for fruit in "${fruits[@]}"; do echo "${fruit}" done
这样做的好处是数组元素可以包含空格或者$ IFS的其他成员。只要将它们正确插入为单独的元素,它们的读取方式相同。