2013-11-25 247 views
0

我试图在执行shell脚本后执行命令。 下面的代码是我到目前为止已经试过:Shell脚本完成后执行命令

#! /bin/bash 
exec >> /tmp/foo.log 

#$REPO and $AUTHOR are environmental varibles 
echo "test" >> /tmp/foo.log 
echo $REPO >> /tmp/foo.log 
echo $AUTHOR >> /tmp/foo.log 

exit 0 

cd /var/www/html/websvn 
php remove_commits.php $REPO $AUTHOR 

以上脚本不工作的一些原因。我怎样才能解决这个问题?严重需要你的帮助。

+0

你想用顶部的exec语句做什么?你还没有告诉它要执行什么。另外,当你运行exit 0时,shell会退出;以后的命令将不会运行。 – Vitruvius

+1

@Saposhiente在这种情况下,“cat >> /tmp/foo.log”不适用于某些程序的执行。它将所有的stdout重定向到/tmp/foo.log。所以其他三个“>>/tmp/foo.log”是不需要的。 –

+0

(前面评论中的'cat'显然应该是'exec'。) – tripleee

回答

3

假设您想要执行cd命令和php脚本,您需要删除退出0.退出脚本。

+0

如何在成功执行上面的命令后执行cd命令和php脚本?我是否需要创建另一个shell脚本并添加cd命令和php脚本? –

+0

正如sophishiente指出的,查看exec >> /tmp/foo.log。具体来说,你认为应该怎么做?提示:删除该行,看看是否能解决您的问题。 – MichaelMilom

+0

你认为'echo'命令可能会失败吗?无论如何,将'set -e'添加到脚本的顶部会强制它在出错时终止。 – tripleee

0

下面的代码在foo.sh成功后运行php。

$ ./foo.sh && (cd /var/www/html/websvn; php remove_commits.php $REPO $AUTHOR) 

exec >> /tmp/foo.log重定向以下命令以/tmp/foo.log的所有输出。不是执行命令。请参阅http://wiki.bash-hackers.org/commands/builtin/exec