在 nohup 模式下运行时的不同行为(linux shell)
我尝试在linux shell中进行字符串替换,
str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a
它可以在我调用命令时执行:./test.sh 但是如果我在 nohup 模式下运行它,使用命令: nohup ./test.sh &
它说 ./test.sh: 8: 替换错误
这里出了什么问题?
谢谢
I try to do string replacement in linux shell,
str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a
It can execute when I invoke command : ./test.sh
But if I run it in nohup mode, using command : nohup ./test.sh &
It says that
./test.sh: 8: Bad substitution
What's wrong here ?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您的脚本顶部没有
#!/bin/bash
,因此“nohup”命令使用的是 /bin/sh,而您系统的 /bin/sh 不是 BASH。您分配“str”和“a”的第一行和第三行不是正确的 Bourne 语法。由于您可能想要使用 BASH 而不是使用严格 Bourne 语法的 shell,因此您应该添加 #!脚本顶部的行如下所示:
Since you have no
#!/bin/bash
at the top of your script, the 'nohup' command is using /bin/sh and your system's /bin/sh isn't BASH. Your first and third lines where you assign 'str' and 'a' are not correct Bourne syntax.Since you likely want to use BASH and not a shell that uses strict Bourne syntax, you should add a #! line at the top of your script like this: