我正在使用capistrano来部署我的php应用程序。我需要将配置文件列表从以前的版本复制到新版本。该列表以数组形式维护。当我循环遍历此数组以从先前版本复制到当前版本时,如果未找到源文件,则会抛出错误并进一步执行停止。我希望脚本忽略这种情况并继续执行下一个命令,如果源文件不存在则打印一条简单的消息。我尝试使用如下命令,但没有运气:
run "test -f /tmp/myfile && cp -p /tmp/myfile /home/admin
甚至
if(File.exists?("/tmp/myfile"))
run "cp -p /tmp/myfile /home/admin"
else
print " file doesnot exist"
end
提前致谢!!
答案 0 :(得分: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
表示成功。
"test -f /tmp/myfile && cp -p /tmp/myfile /home/admin
的结果会
如果1
不存在,仍然是/tmp/myfile
。您可以使用||
使用该文件不存在的消息调用echo
:
test -f /tmp/myfile && cp -p /tmp/myfile /home/admin && echo myfile does not exist
这是一回事。