/ / Exécution de plusieurs commandes sur un nouveau shell (blocage) - android, ruby

Exécuter plus d'une commande sur un nouveau shell (blocage) - android, ruby

J'ai besoin d'exécuter plusieurs commandes sur un shell adb.

Ma première tentative a été d'utiliser popen:

def adb_root(commands)
console = IO.popen("adb shell", :mode => "w")
commands.each do |cmd|
console.puts(cmd)
end
end

Mais cela commence un sous-processus et je ne sais pas quand toutes les commandes sont exécutées. J'aurais besoin de cela pour bloquer.

Y a-t-il un moyen facile de faire ceci?

Réponses:

0 pour la réponse № 1

J'utilise "bash -c" au lieu de "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

Cela ouvre un nouveau shell (bash / adb) pour chaque commande. Il n’existe pas vraiment de moyen de savoir quand la commande est terminée sinon, autant que je sache. J'espère que cela vous aidera.