fdisk命令在终端上运行但不使用ruby脚本运行

时间:2013-12-31 13:32:30

标签: ruby macos system popen

在我的Mac OS X上,我试图通过echo和Pipe Operator为fdisk命令提供输入,并且在这个过程中我想为连接的USB Drive的1号分区提供可启动标志,然后我想退出并保存为实现这一点,我在终端上写了以下内容:

 xxx-Mac:~xxx$ echo -e 'flag 1\nquit\nyes' | sudo fdisk -e /dev/disk2

我试过了,当我在终端上手动输入但是当我把它放在脚本上并使用它时失败了。

我在脚本执行期间也获得了此命令的成功退出状态

我在ruby脚本上写了这个命令:

#!/usr/bin/env ruby

`echo -e 'flag 1\nquit\nyes' | sudo fdisk -e /dev/disk2`

编写此代码的更好方法是使命令成功运行并保存所有更改

编辑:

当我尝试在irb上使用建议的方式时,我得到了以下输出:

`echo -e 'flag 1\\nquit\\nyes' | sudo fdisk -e /dev/disk2`
"Enter 'help' for information\nfdisk: 1> Invalid command '-e'. Try 'help'.\nfdisk: 1>"

1 个答案:

答案 0 :(得分:1)

如何使用Open3::popen2

require 'open3'

Open3.popen2('sudo fdisk -e /dev/disk2') { |i,o,t|
  i.puts 'flag 1'
  i.puts 'quit'
  i.puts 'yes'
  i.close
  p o.read
  t.join
}