Eu tenho um script bash que chama internamente um script Ruby, com base na situação às vezes o script Ruby solicitará uma seleção do usuário; como posso tornar isso possível?
Script principal do Bash:
#!/usr/bash
for host_name in `./myruby.rb -a xxx -b xxx`
do
echo -e "$host_name"
done
wrapper myruby.rb
#!/usr/bin/ruby
.....
......
puts "enter your selection ?"
user_selection = $stdin.gets
Se eu executo o Ruby diretamente, ele está funcionando bem, mas quando o executo do bash, não solicita a entrada do usuário; ao contrário, está pendurado.
Respostas:
1 para resposta № 1O script ruby lê do stdin, então você precisa fornecer algo sobre o stdin, mesmo quando chamado do bash. você poderia fazer assim:
$(rubyscript <<< "selection")
A construção $ () é a mesma que os backticks O <<< fornece a string "selection" como entrada no stdin para o rubyscript.
Ou você pode simplesmente digitar a resposta quando o script bash "travar"