0

我正在使用 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

提前致谢 !!

4

1 回答 1

1

我会这样做:

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

请记住,所有 capistranorun命令都在远程服务器上执行,只有退出值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

这是同一件事。

于 2013-03-08T07:01:08.760 回答