我需要在 adb shell 上运行几个命令。
我的第一次尝试是使用 popen:
def adb_root(commands)
console = IO.popen('adb shell', :mode => 'w')
commands.each do |cmd|
console.puts(cmd)
end
end
但这会启动一个子进程,我不知道何时执行所有命令。我需要这个来阻止。
是否有捷径可寻?
我使用“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。据我所知,没有一个很好的方法可以知道命令何时完成。希望这可以帮助。