我需要在adb shell上运行几个命令。
我的第一次尝试是使用popen:
def adb_root(commands)
console = IO.popen('adb shell', :mode => 'w')
commands.each do |cmd|
console.puts(cmd)
end
end
但这会启动一个子进程,我不知道何时执行所有命令。 我需要这个阻止。
有一种简单的方法吗?
答案 0 :(得分:0)
我使用“bash -c”而不是“adb shell”
commands_array = ["ls /", "cd /tmp/", "echo 123"]
def run_commands(commands)
response = []
commands.each do |command|
IO.popen("/bin/bash -c #{command}") do | cmd_io |
response << cmd_io.readlines.map(&:strip)
puts "Response: #{response.inspect}"
end
end
return response
end
puts run_commands(commands_array).inspect
这将为每个命令打开一个新的(bash / adb)shell。据我所知,没有一种非常好的方法可以知道命令何时完成。希望这会有所帮助。