我有一个可以从文件或标准输入读取的 shell 脚本。目前,如果您没有给它一个文件或管道文本,它就会开始在命令提示符下接受输入。
相反,我想在这种情况下打印“帮助”信息。有没有标准的方法来做到这一点?如果没有,有没有办法检测标准输入而不影响它?或者有没有办法检测潜在的输入来自哪里?
我知道该read
命令可以通过其退出状态告诉我是否有输入。但它也行为在输入上,影响后续的读取。
答案1
解决方案是检查输入是否来自 tty 设备。首先,检查是否给出了 args,然后检查tty
.
if [ ! "$#" -gt 0 ] && tty -s ; then
show_help
exit 1
fi
从文档中tty
:
打印连接到标准输入的终端的文件名。
如果没有连接到标准输入的终端,tty
则给出失败退出状态。并且该-s
选项会抑制输出。