当我这样做时,
$ exec 6<&0 0</tmp/lines.txt
巴什退出。为什么?
谢谢
埃里克·
这使得
bash从/tmp/lines.txt
读取命令,并在进程中重定向其输入。在文件中的所有这些命令之后,将不再有任何输入需要处理,因此 shell 只会在它之后退出,就像执行 shell 脚本一样。
如果你想在处理完/tmp/lines.txt 中的命令后不让 bash 退出,请确保你可以放回它的输入,如下所示:
exec 6<&0 < <(cat /tmp/lines.txt; echo; echo "exec <&6";)
它既发送/tmp/lines.txt
的输入作为命令,也发送exec <&6
,将来自进程替代封装的&6
输入。
还有一个更清洁的方法:
exec 6<&0 < <(cat /tmp/lines.txt; echo; echo "exec <&- <&6 6<&-";)
或者简单地说:
exec 6<&0 < <(cat /tmp/lines.txt; echo; echo "exec <&6-)