2013-03-08 46 views
0

我正在使用capistrano來部署我的php應用程序。我有要求將配置文件從以前的版本列表複製到新版本。該列表保存在一個數組中。當我循環這個數組以複製從前一個版本到當前版本時,如果沒有找到源文件,它會拋出一個錯誤,並停止進一步的執行。如果源文件不存在,我希望腳本忽略這種情況並繼續執行下一條命令,打印一條簡單消息。我試着用命令像下面,但沒有運氣: run "test -f /tmp/myfile && cp -p /tmp/myfile /home/admin如何在capistrano腳本中複製文件而不會在源文件不存在時拋出錯誤?

提前

甚至

if(File.exists?("/tmp/myfile")) 

run "cp -p /tmp/myfile /home/admin" 


else 

    print " file doesnot exist" 

end 

謝謝!

回答

1

我這個去:

run <<-CMD 
    if [ -f /tmp/myfile ]; then \ 
    cp -p /tmp/myfile /home/admin; \ 
    else \ 
    echo 'myfile does not exist'; \ 
    fi 
CMD 

請記住,所有Capistrano的run命令在遠程服務器上執行,而僅 的0出口值表示成功。 如果/tmp/myfile不存在,"test -f /tmp/myfile && cp -p /tmp/myfile /home/admin的結果爲 仍爲1。你可以使用||到 呼叫echo一條消息,該文件不存在:

test -f /tmp/myfile && cp -p /tmp/myfile /home/admin && echo myfile does not exist 

這是同樣的事情。

+0

非常感謝,它完全符合我的要求。 – 2013-03-08 07:56:12

相關問題