如何在 ksh 中编写脚本退出终端?

如何在 ksh 中编写脚本退出终端?

我正在编写一个 shell 脚本。我使用了case有关某些内容的语句。我有一个选项/案例,因为q它应该退出终端。

 case "$i" in
         1) some script. ;;
         q) break && exit;;

但它只是从脚本退出,而不是从终端退出。

有人能帮我吗?注意 shell 是ksh

答案1

错误的方法

q) kill ksh

好方法

在你的主 shell 中,执行以下操作

alias yourscript='exec yourscript'

因此脚本接管了shell并在结束时退出shell。

答案2

ksh支持$PPID。此变量标识 shell 父级的进程号ksh

因此,如果你的脚本从任何shell (并且由于它的 shebang 而被解释ksh)那么这应该会使这个 shell 退出:

kill -s SIGHUP $PPID

请注意,它也会终止该脚本,除非调用该脚本nohup或使用了一些类似的技巧。

然后,如果没有另行配置,您的终端仿真器应该自动退出(例如,PuTTY 有“退出时关闭窗口”选项,可以设置为“从不”)。

相关内容