0

当我做,

$ exec 6<&0 0</tmp/lines.txt

bash 退出。为什么?

谢谢,

埃里克·J。

4

1 回答 1

3

这使得 bash 读取命令/tmp/lines.txt在过程中重定向其输入。在文件中的所有这些命令之后将不再有任何输入要处理,因此 shell 会在它之后退出,就像执行 shell 脚本一样。

如果您不想让 bash 在处理 /tmp/lines.txt 中的命令后退出,请确保您可以将其输入放回,例如:

exec 6<&0 < <(cat /tmp/lines.txt; echo; echo "exec <&6";)

它既发送/tmp/lines.txtas 命令的输入,也发送由进程替换封装的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-)
于 2013-09-09T14:45:42.713 回答