Bash 脚本在错误时退出(set -e)关闭 putty SSH 会话

Bash 脚本在错误时退出(set -e)关闭 putty SSH 会话

我使用 set -e 强制脚本在运行命令时发生错误时退出。然而,这样做的副作用是关闭了我用来通过 SSH 连接到主机的 putty 终端窗口。

如何阻止终端关闭?

答案1

您如何运行脚本?子进程退出的情况不应该影响运行它的 shell...除非您将脚本放入正在运行的 shell 中。

例如...

./my-script.sh # this should terminate and leave your shell intact
. my-script.sh # this might terminate and take your shell with it

bash'nix shell 是某个 shell 解释器(例如,、、 )的运行进程。对脚本执行“source”操作(可以使用命令或其别名ksh执行此操作)会告诉该解释器打开指定文件并处理其内容。实际上,脚本成为以交互方式输入命令的快捷方式。定义的函数、设置的变量和(在您的情况下)处理的 s 都会在原始 shell 中生效。cshbashsource.exit

./my-script.sh是一个简单的文件路径。./指当前目录和my-script.sh该目录中的脚本。当文件被标记为可执行时,该文件将被执行。对于脚本,这意味着启动一个新的解释器进程(由#!脚本顶部的行定义,或/bin/sh默认情况下)并使用它来解释脚本。定义的函数、设置的变量和exit处理的操作都限于该新的解释器进程。

相关内容