我尝试在linux shell中进行字符串替换,
str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a
我可以在调用命令时执行:./ test.sh 但如果我在nohup模式下运行它,请使用命令:nohup ./test.sh& amp;
它说 ./test.sh:8:错误的替换
这里有什么问题?
由于
答案 0 :(得分:6)
由于脚本顶部没有#!/bin/bash
,因此'nohup'命令使用/ bin / sh而系统的/ bin / sh不是BASH。分配'str'和'a'的第一行和第三行不是正确的Bourne语法。
由于您可能希望使用BASH而不是使用严格Bourne语法的shell,因此您应该添加#!在你的脚本顶部的行如下:
#!/bin/bash
str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a