要替换 bash 字符串中的子字符串,str
我使用:
str=${str/$pattern/$new}
但是,我目前正在编写一个脚本,该脚本将使用ash
.
我有一个包含的字符串'/'
,我想使用上面的语法来替换'/'
我的字符串中的,但它不起作用。
我试过了:
str=${str///a}
str=${str/\//a}
str=${str/'/'/a}
但他们不工作
我该如何解决?
此参数扩展是 POSIX sh 的 bash 扩展。如果您查看IEEE 标准1003.1的相关部分,您会发现它不是必需的功能,因此仅承诺 POSIX 合规性的外壳,例如ash
他们无论如何都应该这样做,以达到任何特定的正确性标准。
如果您想要 bash 扩展,则需要使用 bash(或其他类似扩展的 ksh 衍生产品)。
在此期间,您可以使用其他工具。例如:
str=$(printf '%s' "$str" | tr '/' 'a')
或者
str=$(printf '%s' "$str" | sed -e 's@/@a@g')