/ / Esecuzione di più di un comando in una nuova shell (blocco): Android, Ruby

Esecuzione di più di un comando in una nuova shell (blocco) - android, ruby

Ho bisogno di eseguire diversi comandi su una shell adb.

Il mio primo tentativo è stato di usare popen:

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

Ma questo avvia un processo secondario e non so quando vengono eseguiti tutti i comandi. Avrei bisogno di questo per bloccare.

C'è un modo semplice per farlo?

risposte:

0 per risposta № 1

Uso "bash -c" invece di "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

Questo apre una nuova shell (bash / adb) per ogni comando. Non c'è davvero un buon modo per sapere quando il comando è finito altrimenti per quanto ne so. Spero che questo aiuti.