我正在使用 set -e 强制我的脚本在运行命令时发生错误时退出。但是,这会导致关闭我用来通过 SSH 连接到主机的 Putty 终端窗口的副作用。
如何阻止终端关闭?
and*_*ble 15
你是如何运行脚本的?子进程退出的情况不应该影响运行它的外壳程序……除非您将脚本放入正在运行的外壳程序中。
例如...
./my-script.sh # this should terminate and leave your shell intact
. my-script.sh # this might terminate and take your shell with it
Run Code Online (Sandbox Code Playgroud)
'nix shell 是一些 shell 解释器(例如,bash
, ksh
, csh
)的运行过程。“source”一个脚本(你可以bash
用命令source
或其别名来完成.
)告诉解释器打开指定的文件并处理它的内容。实际上,脚本成为交互式输入命令的快捷方式。定义的函数、设置的变量和(在您的情况下)exit
处理的函数在原始 shell 中生效。
./my-script.sh
是一个简单的文件路径。./
指的是当前目录和该目录my-script.sh
中的脚本。当文件被标记为可执行文件时,该文件将被执行。在脚本的情况下,这意味着启动一个新的解释器进程(由#!
脚本顶部的行定义,或/bin/sh
默认情况下)并使用它来解释脚本。定义的函数、设置的变量和exit
处理的 s 仅限于新的解释器进程。
归档时间: |
|
查看次数: |
6179 次 |
最近记录: |