2013-11-25 293 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