如何在POSIX sh字符串中替换“ /”

Anis_Stack:

要替换bash字符串中的子字符串,str我使用:

str=${str/$pattern/$new}

但是,我目前正在编写一个脚本,该脚本将通过执行ash

我有一个包含的字符串,'/'并且我想使用上述语法来替换'/'字符串中的,但是它不起作用。

我试过了:

str=${str///a}
str=${str/\//a}
str=${str/'/'/a}

但是它们不起作用

我该如何解决?

查尔斯·达菲(Charles Duffy):

此参数扩展是POSIX sh的bash扩展。如果查看IEEE标准1003.1的相关部分,您会发现它不是必需的功能,因此仅承诺POSIX合规性的shell(例如)ash没有实现的义务,也没有义务实现它们的实现。他们应该以任何特定的正确性标准这样做。

如果要使用bash扩展,则需要使用bash(或其他类似扩展的ksh派生)。

在此期间,您可以使用其他工具。例如:

str=$(printf '%s' "$str" | tr '/' 'a')

要么

str=$(printf '%s' "$str" | sed -e 's@/@a@g')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章