bash脚本stdin未检测到澄清



这让我有点困惑。这是我的bash脚本:

文件名:reader.sh

READ = $("cat")
echo "$READ"

所以第一行读取stdin,第二行打印它。尽管如此,当我启动终端并开始按键盘上的键时,它会在终端中弹出,因为shell将stdin和stdout重定向到例如dev/pts/0,这意味着该文件既用作stdin,也用作stdout。然后,shell(当tty驱动程序找到返回时(保存命令行的第一个参数,即实用程序,并查看命令linux的其余部分,然后在被调用的程序的环境中放入一种数组或参数列表,以便使用参数。为什么上面的bash脚本可以通过管道stdin打印文件的输出,例如./reader.sh < otherfile,而不仅仅是./reader.sh?在第二个例子中,我希望从dev/pts/0中读取stdin中的内容,因为这也只是stdin。

是因为当参数被解析到列表中时,dev/pts/0文件被清空了吗?

使用时

./reader.sh < otherfile

脚本中的stdin连接到文件,而不是/dev/pts/0cat继承了这个stdin,所以它从文件中读取。

最新更新