Ani*_*ack 9 linux string shell ash
要替换bash字符串中的子字符串,str我使用:
str=${str/$pattern/$new}
Run Code Online (Sandbox Code Playgroud)
但是,我现在正在编写一个将被执行的脚本ash.
我有一个包含的字符串'/',我想使用上面的语法来替换'/'我的字符串,但它不起作用.
我试过了:
str=${str///a}
str=${str/\//a}
str=${str/'/'/a}
Run Code Online (Sandbox Code Playgroud)
但它们不起作用
我怎么解决这个问题?
Cha*_*ffy 13
此参数扩展是POSIX sh的bash扩展.如果您查看IEEE标准1003.1的相关部分,您将看到它不是必需的功能,因此仅承诺POSIX合规性的shell,例如ash,没有义务实现它,并且没有义务实现它们任何特定的正确标准,如果他们这样做,无论如何..
如果你想要bash扩展,你需要使用bash(或类似扩展的其他ksh派生词).
在此期间,您可以使用其他工具.例如:
str=$(printf '%s' "$str" | tr '/' 'a')
Run Code Online (Sandbox Code Playgroud)
要么
str=$(printf '%s' "$str" | sed -e 's@/@a@g')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |