如何判断STDIN是否连接到Perl中的终端?
答案 0 :(得分:13)
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
我通常将它与-t STDOUT结合使用,以确定我是从交互式shell还是从cron运行,以启用更多输出。
答案 1 :(得分:12)
您可能也对IO::Interactive感兴趣,以确定Perl是否认为它与用户进行交互。简单地连接到tty并不意味着用户将会看到你做的事情。
答案 2 :(得分:0)
一种解决方案是使用tty:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty
但不是很漂亮......