检测输入是否来自终端

检测输入是否来自终端

我有一个可以从文件或标准输入读取的 shell 脚本。目前,如果您没有给它一个文件或管道文本,它就会开始在命令提示符下接受输入。

相反,我想在这种情况下打印“帮助”信息。有没有标准的方法来做到这一点?如果没有,有没有办法检测标准输入而不影响它?或者有没有办法检测潜在的输入来自哪里?

我知道该read命令可以通过其退出状态告诉我是否有输入。但它也行为在输入上,影响后续的读取。

答案1

解决方案是检查输入是否来自 tty 设备。首先,检查是否给出了 args,然后检查tty.

if [ ! "$#" -gt 0 ] && tty -s ; then
  show_help
  exit 1
fi

从文档中tty

打印连接到标准输入的终端的文件名。

如果没有连接到标准输入的终端,tty则给出失败退出状态。并且该-s选项会抑制输出。

相关内容