Ruby 脚本如何检测它是否由交互式 shell 触发?
How can a Ruby script detect if it was triggered by an interactive shell?
我有一个 Ruby 脚本,它通常作为 cron 作业启动,但有时从命令行使用。我想显示一些仅与后一种情况相关的更新文本,以显示进度,但不值得记录。
Ruby 脚本检测以下条件的安全且惯用的方法是什么?
- 是否在互动中触发shell
- 是否正在管道
检查 STDIN 是否为“TTY”(字面意思 teletypewriter) with IO#isatty
。
$ ruby -e 'puts STDIN.isatty'
true
$ echo "no" | ruby -e 'puts STDIN.isatty'
false
我有一个 Ruby 脚本,它通常作为 cron 作业启动,但有时从命令行使用。我想显示一些仅与后一种情况相关的更新文本,以显示进度,但不值得记录。
Ruby 脚本检测以下条件的安全且惯用的方法是什么?
- 是否在互动中触发shell
- 是否正在管道
检查 STDIN 是否为“TTY”(字面意思 teletypewriter) with IO#isatty
。
$ ruby -e 'puts STDIN.isatty'
true
$ echo "no" | ruby -e 'puts STDIN.isatty'
false