【发布时间】:2020-01-10 02:23:15
【问题描述】:
设x为参数,初始化如下:
x=("drink/beer" "drink/whine" "drink/boooze")
假设还有参数y和z,分别是y="drink"和z="buy"。
对于x 中的每个单词,我想用z 替换掉y 的部分。因此,预期输出是
buy/beer buy/whine buy/boooze
我虽然下面的代码会这样做:
print ${x:s/${y}/${z}}
但是,它不起作用。 “drink”子字符串没有被替换,我可以在modifier documentation 中找到原因:
s/l/r/ 替换的工作原理如下 [...] 当在历史记录中使用时 展开,发生在任何其他展开之前,l 和 r 是 视为文字字符串
这意味着,在我的尝试中,zsh 从字面上搜索“${y}”,这当然是找不到的。是否有另一种方法可以在不使用显式循环的情况下实现我的目标?
【问题讨论】:
标签: parameters zsh substitution