在我的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>"
答案 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
}