在perl中,只需执行以下操作即可存储和迭代名称列表
my @fruit = (apple, orange, kiwi); foreach (@fruit) { print $_; }
bash中的等价物是什么?
bash(与POSIX sh不同)支持数组:
fruits=(apple orange kiwi "dried mango") for fruit in "${fruits[@]}"; do echo "${fruit}" done
这样做的优点是数组元素可能包含$ IFS的空格或其他成员; 只要它们作为单独的元素正确插入,它们就会以相同的方式读出.
像这样:
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
恢复其旧值.:-)