如何在Bash for循环中将字符串数组内联?

31

如何在bash for循环中内联字符串数组? 这个方法是行得通的:

array=(one two)
for i in ${array[*]};do echo $i; done

但我想要消除多余的本地变量。我尝试了许多看起来合理的变化,例如:

for i in ${("one" "two")[*]};do echo $i; done
或者
for i in ${"one" "two"};do echo $i; done

在每种情况下,它将onetwo视为命令 :(


5
尝试:for i in one two; do echo $i; done - Whymarrh
2
for i in "one" "two";do echo $i; done 有什么问题吗? - Gene
2
你应该将 for i in ${array[*]} 改为 for i in "${array[@]}" - 这样可以保护你的数组元素不受空格或通配符的影响。 - glenn jackman
2个回答

32
你尝试过这样吗: for i in "one" "two"; do echo "$i"; done

1
那不会是一个数组。 - bufh
1
抱歉...我实际上偏离了问题,因为我从这里得到的印象:https://dev59.com/2Wox5IYBdhLWcg3w74q3,这个功能正在被寻求(当前的问题提问者在那里发表了评论)。我忽略了一个选项,即可能希望在循环体中引用另一个数组元素(不仅仅是当前元素)...我应该删除答案吗? - Alija Bevrnja
即使它没有严格回答问题,这个答案对我很有用,而且根据点赞数来看,对许多人来说也是如此。 - trollkotze
这里的含义是在Bash中无法内联数组吗? - user1034533

12
for i in {one,two}; do echo "$i"; done

直到我意识到在 {"some text", "test"} 中不能有空格,我才能使它工作。对于其他遇到困难的人,请确保在 {...} 内部的逗号后面没有空格。 - antshar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接