[英]Parameter expansion in substitution modifier
設x
是一個初始化如下的參數:
x=("drink/beer" "drink/whine" "drink/boooze")
假設還有參數y
和z
,分別為y="drink"
amd z="buy"
。 對於x
每個單詞,我想用z
替換 machtes y
的部分。 因此,預期輸出為
buy/beer buy/whine buy/boooze
我雖然下面的代碼會這樣做:
print ${x:s/${y}/${z}}
但是,它不起作用。 “飲料”子字符串未被替換,我可以在修飾符文檔中找到原因:
s/l/r/ 替換的工作方式如下 [...] 在歷史擴展中使用時,發生在任何其他擴展之前,l 和 r 被視為文字字符串
這意味着,在我的嘗試中,zsh 從字面上搜索“${y}”,這當然是找不到的。 有沒有另一種方法可以在不使用顯式循環的情況下實現我的目標?
參數擴展有自己的替換語法,與歷史修改操作符分開。
% print ${x/$y/$z}
buy/beer buy/whine buy/boooze
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.