У мене є скрипт bash, який внутрішньо викликає скрипт Ruby, виходячи з ситуації, іноді сценарій Ruby буде вимагати вибору користувача; як я можу це зробити?
Основний сценарій Bash:
#!/usr/bash
for host_name in `./myruby.rb -a xxx -b xxx`
do
echo -e "$host_name"
done
обгортка myruby.rb
#!/usr/bin/ruby
.....
......
puts "enter your selection ?"
user_selection = $stdin.gets
Якщо я запускаю Ruby безпосередньо, він працює нормально, але коли я запускаю його з bash, це не спонукає користувача до введення; швидше це висить.
Відповіді:
1 для відповіді № 1Рубінський скрипт читається з stdin, тому вам потрібно надати щось на stdin, навіть якщо він викликається з bash. ти можеш це зробити так:
$(rubyscript <<< "selection")
Конструкція $ () така ж, як і заставки <<< дає рядок «вибір» як вхідний файл для stdin для rubyscript.
Або ви можете просто набрати відповідь самостійно, коли сценарій bash "зависає"