ruby - 从 Ruby 脚本运行 Linux 系统命令

标签 ruby linux system

我有以下创建 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/

相关文章:

ruby - 有没有办法在葡萄上修改或发送自定义 header ?

java - 获取操作系统级别的系统信息

Android Linux系统调用列表

ruby-on-rails - 更改 rvm 使用的 rails 版本

ruby - Ruby 的 XMP 库

ruby - 如何使用 rake 检查特定软件包是否安装在 linux 上?

c - 如何在 Linux 中使用 C 中的多个管道运行命令?

linux - Linux中文件描述符的上限

linux - 对于 bash 脚本,是否有类似于 C/C++ 中的#define 的内容?

android - 如何让我的应用成为系统应用?