用户输入的Bash包装器脚本提示
我有一个bash脚本,它在内部调用Ruby脚本,根据情况,有时候Ruby脚本会提示用户选择;我怎样才能做到这一点 主Bash脚本:用户输入的Bash包装器脚本提示,bash,Bash,我有一个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
#!/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运行它时,它不会提示用户输入;相反,它是挂起的。ruby脚本从stdin读取,因此即使从bash调用,您也需要在stdin上提供一些内容。你可以这样做:
$(rubyscript <<< "selection")
$(rubyscript您的脚本没有挂起;它只是在等待输入。您没有看到提示(我怀疑)因为它是打印到标准输出的,标准输出由反勾号捕获。请注意,前四个主机名将是“enter”、“your”、“selection”和“?”,因为Ruby脚本将其提示符写入标准输出。也许您应该改为将提示符写入标准错误;用户将看到这一点并能够做出响应,提示符将我想,“或者你可以直接键入答案”部分也适用。shell捕获提示符作为前四个主机名,然后等待用户响应。ruby脚本将根据用户输入生成主机名,而且我不能在bacticts上传递参数,因为基于situation ruby脚本会在不提示的时候提示用户输入,我的要求是,如果ruby脚本提示用户输入,我如何在bash脚本上捕获它?