bash shell 命令在命令提示符下运行良好,但在我的.sh 脚本中却不行?

bash shell 命令在命令提示符下运行良好,但在我的.sh 脚本中却不行?

我正在尝试编写一个重新启动 tomcat 的脚本,但无法弄清楚我的问题是什么。

如果我在命令提示符下执行以下命令,它可以正常运行:

/usr/local/etc/rc.d/tomcat7 start

但是,在 myshell.sh 脚本中,我尝试运行带有和不带有反引号的相同命令,如下所示:

rc=`/usr/local/etc/rc.d/tomcat7 start`
rc=/usr/local/etc/rc.d/tomcat7 start
rc=$(/usr/local/etc/rc.d/tomcat7 start)

但什么也没有发生并且我没有得到任何错误输出。

什么可以在命令提示符下运行,但不能在我的 shell 脚本中运行?

提前致谢。

答案1

由于您说在通过 cron 运行脚本时遇到了这个问题,这里有几个想法。

通过 cron 运行脚本时出现的 99% 的问题都是因为$PATH。 cron 使用的路径非常少。您确实指定了 init 脚本的完整路径,因此我认为这不是问题所在。您的脚本没有执行任何其他操作,对吗?

另外,在您的脚本中,如果您使用的是 bash,您可以更改第一行(shebang)并添加第二行,如下所示

#!/bin/bash -x
exec &>/tmp/script.log

这将在 cron 运行脚本时启用调试。它还会将脚本的所有输出记录到 /tmp/script.log。解决问题后,您可以将其恢复。

答案2

为什么要尝试将其分配给变量?

只是

/usr/local/etc/rc.d/tomcat7 start

在脚本中应该可以解决问题。如果您需要此命令的文本输出,您可以使用运算符将​​其重定向到文件中,>并且可以使用$?特殊变量来检查命令的返回代码。

相关内容