Трябва да тичам няколко команда на една черупка на ADB.
Първият ми опит беше да използвам попън:
def adb_root(commands)
console = IO.popen("adb shell", :mode => "w")
commands.each do |cmd|
console.puts(cmd)
end
end
Но това стартира подпроцес и не знам кога се изпълняват всички команди. Трябваше да блокирам това.
Има ли лесен начин да направите това?
Отговори:
0 за отговор № 1Използвам "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) черупка за всяка команда. Не е наистина добър начин да знаете кога командата е завършена иначе доколкото знам. Надявам се това да помогне.