【问题标题】:ruby system call cp: missing destination file operand afterruby 系统调用 cp:之后缺少目标文件操作数
【发布时间】:2014-10-16 18:29:53
【问题描述】:

我在 ruby​​ 脚本中有类似于以下内容的内容:

from = "/path/to/script.rb"
to = "/path/to/destination/"
puts "Copying #{from} to #{to}"
system("cp #{from} #{to}")

这会在终端中给出以下输出:

copying /path/to/script.rb 
 to /path/to/destination/
cp: missing destination file operand after ‘/path/to/script.rb’
Try 'cp --help' for more information.

我在终端中运行以下命令没有问题:

cp /path/to/script.rb /path/to/destination

不在 ruby​​ 脚本中:

system("cp /path/to/script.rb /path/to/destination")

任何关于如何更好地解决我的脚本问题的建议或正确方向的指针都将不胜感激。

【问题讨论】:

  • system('cp', from, to) 工作吗?
  • 问题是我正在从文件中读取,而不是修剪换行符。我只是编辑了输出来说明。
  • 您应该回答自己的问题并将其标记为已接受。
  • 谢谢,刚刚更新。我可以在 2 天内接受答案。

标签: ruby scripting terminal


【解决方案1】:

我正在读取文件,而不是修剪换行符。这应该在终端输出中已经很明显了(注意'to'之前的换行符和空格)。

更改自:

files = []
File.open(file-of-paths).read.each_line do |line|
 files.push(line)
end 

以下解决了这个问题:

files = []
File.open(file-of-paths).read.each_line do |line|
 files.push(line.chomp)
end 

【讨论】:

  • 您应该使用File.foreach 来遍历行。它更加高效、简洁,并且在文件完成后会关闭文件。
  • 感谢您的提示!更新了我的脚本。
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 2018-11-16
  • 2013-01-10
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多