我知道如何在Ruby中运行shell命令,比如:

%x[#{cmd}]

但是,如何指定运行此命令的目录?

有没有类似于Python中subprocess.Popen的炮击方式:

subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local')

谢谢

推荐答案

你可以使用Dir.chdir的块版本.在块内部,您位于请求的目录中,在块之后,您仍位于上一个目录中:

Dir.chdir('mydir'){
  %x[#{cmd}]
}

Ruby相关问答推荐

关键字if是什么对象类型/类?

使用正则表达式判断用户输入的开头是否正好有两个大括号

如何使用 HEREDOC 作为参数传递给方法?

当Ruby `Complex` 类除了`==` 之外没有任何关系运算符时,它的祖先怎么能有`Comparable`?

冒号:和粗箭头=>有什么区别

在 Ruby 中,如何确定字符串是否不在数组中?

Ruby 中有类似 Python 生成器的东西吗?

RSpec 是否有可能期望在两个表中发生变化?

将 ruby​​ hash .default 设置为列表

如何将 each每个方法添加到 Ruby 对象(或者我应该扩展 Array)?

将 2 元素数组的数组转换为哈希,其中重复键附加附加值

GET 和 POST 请求的相同 Rails 4 路由

Ruby - 查看端口是否打开

用零填充数字

警告! PATH 设置不正确,通常这是由 shell 初始化文件引起的

Unexpected Return (LocalJumpError)

条件子句中的赋值是好的Ruby风格吗?

使用 Ruby CSV 在导出的 CSV 中更改字段分隔符/分隔符

向实例对象添加方法

什么是 Ruby 1.9 标准 CSV 库?