Evet, kabuk parametre genişletmesinde aşağıdaki gibi bir model değiştirme işlemidir :
${parameter/pattern/replacement}
Fakat ilk sonraki ilk karakter ise /ya /ya# ya da %özel bir anlamı varsa all(tekrarlanan) startve end.
ile:
$ str='one_#two_two_three_one'
Bir tek / örnek ilk örneğin yerini alacaktır. İlk örneği one:
$ echo "${str/one/x-x}"
x-x_#two_two_three_one
Veya ilk örneği two :
$ echo "${str/two/x-x}"
one_#x-x_two_three_one
Örneği one :
$ echo "${str/%one/x-x}"
one_#two_two_three_x-x
Tüm tekrarları two :
$ echo "${str//two/x-x}"
one_#x-x_x-x_three_one
Örneği one :
$ echo "${str/#one/x-x}"
x-x_#two_two_three_one
İle başlayan bir dize # (alıntı yapın #):
$ echo "${str/\#two/x-x}"
one_x-x_two_three_one
Ancak # (alıntılanmamış) işlevini yalnız bırakırsanız, değiştirme değişkeni başında ayarlanır:
$ echo "${str/#/====}"
====one_#two_two_three_one
Ayrıca, parametre bir dizi ise, değiştirme tüm öğelerde yapılır:
$ str=( one two three )
$ echo "${str[@]/#/==}"
==one ==two ==three
#ve%desenin bir parçasıdır ve aynı desenlerden//farklı bir operatördür/ve kullanır. Sahip olabilirsinizpattern='#x'; echo "${var/$pattern}"(veya${var//$pattern}), ancakpattern=/x; echo "${var/$pattern}"aynı değildirecho "${var//x}". Unutmayın#ve%birleştirilebilirzsh, ancakbashne de olamazksh.