我有以下创建 Debian 包的 Ruby 脚本,它工作正常:
#!/usr/bin/ruby dest = "#{File.dirname(__FILE__)}/../build" package = "foo" [ "cd #{dest} && tar czvf data.tar.gz bin console data.sql etc filter install.rb", "cd #{dest} && tar czvf control.tar.gz control", "cd #{dest} && echo 2.0 > debian-binary", "cd #{dest} && ar -cr #{package}.deb debian-binary control.tar.gz data.tar.gz", "cd #{dest} && mv #{package}.deb ..", "cd #{dest} && rm data.tar.gz control.tar.gz", ].each do |command| puts command system(command) end
在 Ruby 中有没有一种方法可以省去每个命令的“cd #{dest} &&”部分?
最佳答案
Dir.chdir(dest) do
# code that shall be executed while in the dest directory
end
Dir.chdir
当用一个 block 调用时将改变到给定的目录,执行该 block 然后变回。
你也可以不加 block 地使用它,在这种情况下它永远不会变回来。
关于ruby - 从 Ruby 脚本运行 Linux 系统命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3216684/