我尝试使用ruby执行shell命令,但我无法用空格将目录更改为PATH。
variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]
这不起作用。 谢谢
答案 0 :(得分:1)
绝对安全:
path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}']
请注意,cd
的输出为空,所以为了确保它的工作原理,可能需要做类似的事情:
path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}' && ls -la]
#⇒ "total 32\ndrwxr-xr-x ....."
答案 1 :(得分:1)
应该做什么?您尝试将chdir放入目录中,但之后不要执行任何操作。在任何情况下,您的variable
都将为空。除了它没有意义之外,你不能以这种方式可靠地执行cd,因为它不是可执行文件。如果您只执行%x[cd]
,就可以看到这一点。您将获得Errno::ENOENT
例外。
也许您应该首先在更广泛的背景下描述您希望使用代码实现的目标。您想在哪里更改工作目录?在Ruby进程中 - 在这种情况下你必须使用Dir.chdir
- 或者在子进程中 - 在这种情况下你必须在cd之后执行一些命令。