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脚本中?

提前致谢。

既然你说过在通过cron运行脚本时遇到了这个问题,这里有一些想法。

当通过cron运行脚本时,99%的问题是由于$PATH 。 cron使用的path非常less。 你确实指定了init脚本的完整path,所以我不希望这是问题。 你的脚本没有做任何事情吗?

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

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

这将在cron运行脚本时启用debugging。 它还会将脚本的所有输出logging到/tmp/script.log。 一旦你解决了这个问题,你可以恢复这个问题。

你为什么试图把这个分配给一个variables?

只是

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

在脚本中应该做的伎俩。 如果你需要这个命令的文本输出,你可以使用>运算符把它redirect到一个文件中,你可以使用$? 特殊variables来检查命令的返回码。