簡體   English   中英

替換修飾符中的參數擴展

[英]Parameter expansion in substitution modifier

x是一個初始化如下的參數:

x=("drink/beer" "drink/whine" "drink/boooze")

假設還有參數yz ,分別為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM