当我这样做时,
$ exec 6<&0 0</tmp/lines.txt
bash退出。为什么呢?
谢谢,
Eric J.
答案 0 :(得分:3)
这使得来自/tmp/lines.txt
的bash读取命令在进程中重定向其输入。在文件中的所有命令之后将不再有任何要处理的输入,因此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-)