/ / Изпълнение на повече от една команда в нова обвивка (блокиране) - андроид, рубин

Изпълнявате повече от една команда в нова обвивка (блокиране) - андроид, рубин

Трябва да тичам няколко команда на една черупка на 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) черупка за всяка команда. Не е наистина добър начин да знаете кога командата е завършена иначе доколкото знам. Надявам се това да помогне.