Ruby-延迟Ruby程序,直到shell命令执行完成
我正在使用shell命令在ruby中压缩文件。然后我将压缩文件上传到服务器。 当我在循环中使用它时,如:Ruby-延迟Ruby程序,直到shell命令执行完成,ruby,loops,zip,delay,Ruby,Loops,Zip,Delay,我正在使用shell命令在ruby中压缩文件。然后我将压缩文件上传到服务器。 当我在循环中使用它时,如: dump_files.each do |dump_file| Open3.popen3("zip #{zip_file} #{dump_file}") end 和上载,dump_files数组中的最后一个文件不在上载的zipfile中,但在本地文件中 我认为这是因为压缩文件的时间延迟。 如何将ruby执行延迟到zip命令执行完成?这不应该是: `zip "#{zip_file}"
dump_files.each do |dump_file|
Open3.popen3("zip #{zip_file} #{dump_file}")
end
和上载,dump_files数组中的最后一个文件不在上载的zipfile中,但在本地文件中
我认为这是因为压缩文件的时间延迟。
如何将ruby执行延迟到zip命令执行完成?这不应该是:
`zip "#{zip_file}" "#{dump_file}"`
(换句话说,你根本就没有拉拉链?这不应该是:
`zip "#{zip_file}" "#{dump_file}"`
(换句话说,你根本没有压缩?用``代替popen3将解决这个问题 替换
Open3.popen3("zip #{zip_file} #{dump_file}")
与
用``代替popen3可以解决这个问题 替换
Open3.popen3("zip #{zip_file} #{dump_file}")
与
问题一定是别的。没有什么可以延迟的,因为当您使用backticks运行shell命令时,shell命令在完成之前不会返回到Ruby。尝试
sleep 10
,您将看到。另外,它似乎怀疑您在命令“zip..”
周围使用了双引号。您应该只运行zip…
。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。非常感谢。问题一定是别的。没有什么可以延迟的,因为当您使用backticks运行shell命令时,shell命令在完成之前不会返回到Ruby。尝试sleep 10
,您将看到。另外,它似乎怀疑您在命令“zip..”
周围使用了双引号。您应该只运行zip…
。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。多谢各位much@Sayuj:您实际上是在尝试调用名为“zip zipfile dumpfile”的命令,而不是带有参数的zip
命令。删除双引号@丹尼斯:他甚至不需要在{}
前后加双引号,因为backtick操作符已经在做字符串插值了。可以我的问题是延迟交货zipping@Sayuj-我想你一定有一些旧文件,你只是认为它有用,但实际上不是。在irb
中手动检查您的命令。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。比你好多了guys@Sayuj:您实际上是在尝试调用名为“zip zipfile dumpfile”的命令,而不是带有参数的zip
命令。删除双引号@丹尼斯:他甚至不需要在{}
前后加双引号,因为backtick操作符已经在做字符串插值了。可以我的问题是延迟交货zipping@Sayuj-我想你一定有一些旧文件,你只是认为它有用,但实际上不是。在irb
中手动检查您的命令。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。比你们好多了