【发布时间】:2013-01-30 10:10:41
【问题描述】:
我有一个内部调用 Ruby 脚本的 bash 脚本,根据情况,有时 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 运行它时,它不会提示用户输入;而是挂了。
【问题讨论】:
-
您的脚本没有挂起;它只是在等待输入。您看不到提示(我怀疑),因为它被打印到标准输出,由反引号捕获。
-
请注意,前四个主机名将是 'enter'、'your'、'selection' 和 '?'因为您的 Ruby 脚本会将其提示符写入标准输出。也许您应该将提示写入标准错误;用户将看到并能够响应,并且提示也不会被反引号捕获。
标签: bash