我在Zsh做过:
array={geometry, analysis, topology, graph theory, calculus} echo $array
然后我想为“math:微积分”这样的每个元素添加单词“math:”:
while (( i++ < 10)); { echo math:$array[i] }
但它不起作用? 为什么?
在zsh中为我工作正常,分配从以下变为:
array={geometry, analysis, topology, graph theory, calculus}
至
array=(geometry, analysis, topology, graph theory, calculus)
但zsh有很多选项可以改变它的行为。 也许输出'setopt'可能会有所帮助。
做就是了:
array=(geometry analysis topology "graph theory" calculus) print -l math:${^array}
或者检查${^var}表单的RC_EXPAND_PARAM 。
韦尔普,我要在这里出去(因为我不接受支持代码是正确的),并说“echomath:$ array [i]”缺less一个美元符号,应该是“echomath:$arrays[$ i]于”
迭代遍历一个数组可以更好的工作for因为你不会像代码那样运行结束(除非你用$ {#array [*]}来限制数组的大小)。
另外,我假设你不想把逗号作为string的一部分,你应该使用圆括号而不是大括号。
array=(geometry analysis topology "graph theory" calculus) for i in $array; do echo math:$i; done