如何在 Zsh 中向数组的每个元素添加一个单词?

如何在 Zsh 中向数组的每个元素添加一个单词?

我在 Zsh 中做了:

array={geometry, analysis, topology, graph theory, calculus}
echo $array

然后我想向每个元素添加单词“math:”,例如“math:calculus”:

while (( i++ < 10)); { echo math:$array[i] }

但它不起作用?为什么?

答案1

在 zsh 中,我可以将任务从以下位置更改,这样就可以正常工作:

array={geometry, analysis, topology, graph theory, calculus}

array=(geometry, analysis, topology, graph theory, calculus)

但是 zsh 有大量选项可以改变其行为。也许输出“setopt”可能会有所帮助。

答案2

做就是了:

array=(geometry analysis topology "graph theory" calculus)
print -l math:${^array}

或检查RC_EXPAND_PARAM表格${^var}

答案3

好吧,我要冒险一试(因为我不认为支持代码是正确的),我说“echo math:$array[i]”缺少美元符号,应该是“echo math:$array[$i]”

答案4

遍历数组效果更好,for因为您不会像代码那样超出末尾(除非您使用 ${#array[*]} 将限制设置为数组的大小)。

此外,我假设您不希望将逗号作为字符串的一部分,并且您应该在数组中使用括号而不是花括号。

array=(geometry analysis topology "graph theory" calculus)
for i in $array; do echo math:$i; done

相关内容