2

我正在尝试使用脚本来更改使用 Dir.chdir 的工作目录

这有效:

dirs = ['//servername/share','//servername2/share']

dirs.each do |dir|
  Dir.chdir dir
end

如果我将上述共享信息放入一个文本文件(每个共享在一个新行)并尝试加载:

File.foreach("shares.txt") {|dir|
  Dir.chdir dir
}

我收到此错误:

'chdir': 没有这样的文件或目录 - //servername/share (Errno::ENOENT)

如何从文本文件中读取共享并切换到该目录?有一个更好的方法吗?

4

1 回答 1

6

尝试

Dir.chdir dir.strip

或者

Dir.chdir dir.chomp

原因:File.foreach您会得到包含换行符 ( \n) 的行。

strip将删除前导和尾随空格,chomp将删除尾随换行符。


另一种可能性:在您的示例中,您使用绝对路径。这应该有效。

如果您使用相对路径,请检查您在哪个目录中(您更改它!)。要保留目录,您可以使用Dir.chdir.

于 2012-03-20T20:40:31.303 回答