这让我有点困惑。这是我的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/0
。cat
继承了这个stdin
,所以它从文件中读取。