我正在尝试使用 bash 的参数扩展来替换美元符号,但遇到了麻烦。我尝试了各种方法,但都没有奏效,我做错了什么?示例:
in_amt="($12.34)"
amt=${in_amt/$/}
echo $amt
生成 (2.34) - 美元符号和后面的“1”被删除
我试过了:
amt=${in_amt/[$]/[]}
amt=${in_amt/[$]}
amt=${in_amt/[\$]}
amt=${in_amt/\$}
amt=${in_amt/(\$/(}
并且可能还有其他变体都具有相同的结果。这发生在两个版本的 bash 上:3.2(Macbook Air)和 5.0.17(Ubuntu 20.04)。
替换“正常”字符有效。
答案1
您应该在单引号中设置初始赋值,因为否则字符串$1
会被 shell 解释
in_amt='($12.34)'
amt=${in_amt/$/}
echo $amt
或者逃避$
标志:
in_amt="(\$12.34)"