![如何在 ksh 中编写脚本退出终端?](https://linux22.com/image/1534633/%E5%A6%82%E4%BD%95%E5%9C%A8%20ksh%20%E4%B8%AD%E7%BC%96%E5%86%99%E8%84%9A%E6%9C%AC%E9%80%80%E5%87%BA%E7%BB%88%E7%AB%AF%EF%BC%9F.png)
我正在编写一个 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 有“退出时关闭窗口”选项,可以设置为“从不”)。