我需要在bash
打印前更改字符串。所以我做了:
${RETEZEC//./D}
现在我需要再为-
更改_
。但不知道如何在那里添加它?在同一步骤,如$`{RETEZEC //./ D; // - / _},我需要一个额外的例外 - ?
答案 0 :(得分:2)
您希望将.
替换为D
,将-
替换为_
。
正如其他人评论的那样,你不能一步到位。但您可以使用tr
:
$ echo "$RETEZEC"
hel-lo_a.b.
$ tr '.-' 'D_' <<< "$RETEZEC"
hel_lo_aDbD
如果要将输出存储在同一变量中,请执行:
$ RETEZEC=$(tr '.-' 'D_' <<< "$RETEZEC")
$ echo $RETEZEC
hel_lo_aDbD
答案 1 :(得分:1)
您可以使用:
s='abc-def-foo'
echo "${s//-/_}"
abc_def_foo
答案 2 :(得分:1)
嵌套参数扩展是不可能的,需要两个表达式:
foo=${RETEZEC//./D}
echo "${foo//-/_}"
但是,您可以使用外部工具执行此操作,但我建议您坚持使用上面的本机shell解决方案。
$ echo "foo.-bar" | tr '.-' 'D_'
fooD-bar