Позвольте x
быть параметром, инициализированным следующим образом:
x=("drink/beer" "drink/whine" "drink/boooze")
Предположим, есть также параметры y
и z
, с y="drink"
amd z="buy"
соответственно. Для каждого слова в x
я хочу заменить часть, которая обрабатывает y
, на z
. Следовательно, ожидаемый результат -
buy/beer buy/whine buy/boooze
Я думаю, что следующий код сделает это:
print ${x:s/${y}/${z}}
Однако он не работает. Подстроки "drink" не подставляются, и я могу найти причину в документации модификатора :
Замена s / l / r / работает следующим образом [...] При использовании в раскрытии истории, которое происходит до любых других расширений, l и r рассматриваются как буквенные строки
Это означает, что в моей попытке zsh буквально ищет "$ {y}" что, конечно, не найти. Есть ли другой способ достижения цели sh моей цели, без использования явного l oop?