我正在编写一个快速的Rails应用程序,并想知道如何验证执行命令的成功。我要运行的两个命令是SVN更新和从一个目录复制到另一个目录。
我正在编写一个快速的Rails应用程序,并想知道如何验证执行命令的成功。我要运行的两个命令是SVN更新和从一个目录复制到另一个目录。
result = system("cp -r dir1 dir2")
if(result)
#do the next thing
else
# handle the error
system()
函数返回true
或false
,具体取决于命令是否成功执行。此外,$?
包含一个错误状态。exec
命令,因为 exec
会用 exec
命令替换当前程序,所以该命令永远不会返回到 Ruby 进行验证。$?
预定义变量将为您提供由 system()
或反引号运算符执行的最后一个命令的返回代码。在进行 SVN 更新之前和之后,请检查版本号。
svn_start_version = IO.popen("svn info").readlines[4]
`svn update`
svn_end_version = IO.popen("svn info").readlines[4]
if svn_end_version > svn_start_version
"success"
end
对于cp命令,您可以检查原始文件的文件大小是否等于复制后的文件。
source_file_size = IO.popen("du file1").readlines
`cp file1 file2`
dest_file_size = IO.popen("du file2").readlines
if dest_file_size == source_file_size
"success"
end