我正在尝试编写一个重新启动 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
在脚本中应该可以解决问题。如果您需要此命令的文本输出,您可以使用运算符将其重定向到文件中,>
并且可以使用$?
特殊变量来检查命令的返回代码。