如何在shell脚本中使用ctrl-D

Shr*_*uti 7 unix bash shell

我有一个bash shell脚本,需要ctrl-D才能打破终端.任何人都告诉我如何在shell脚本中使用它

ssh host last --->显示登录到该主机的用户列表

我有不同的主机输出附加到一个最后,当我执行这个特定的shell脚本以及其他系列的命令时,我正在使用ctrl-D来查看输出

假设我的shell脚本是myscript.sh来执行myscript.sh

./myscript.sh

CTL-d

与主机的连接已关闭

输出显示

相反,我想在我的脚本文件中使用ctrl-D

Geo*_*iou 6

您可以尝试exec <&-
&-用于关闭文件描述符(ps:linux 中的所有内容都是一种文件...)
<&-正在关闭文件描述符 0 = stdin - 也可以写为0<&-

如果你在你的 linux 机器上打开一个普通的终端并输入exec <&-你会看到你的终端关闭/消失,就像你按下一样^D.

PS1:同样,exec >&-关闭标准输出

PS2:如果您关闭标准输入,exec <&-您可以重新打开以继续使用类似的脚本 exec </dev/tty


Ign*_*ams 5

没有办法直接做到这一点。使用 heredoc 来代替标准输入。

./someprog.sh << EOF
something here
EOF
Run Code Online (Sandbox Code Playgroud)