Kill
從命令提示符退出的 Unix 命令
如何從 shell 文件中退出命令提示符?
外殼文件包含:
if(); then // some unix code here else // want to exit from cmd prompt or Kill current cmd prompt fi
有沒有人知道@它?
像Chris Down一樣,我將假設您使用的是 GNU bash。其他shell可能不同,但大體構想應該是一樣的。
在 bash 中,環境變數
$$
包含目前正在執行的程序$PPID
的程序 ID,並包含正在執行的程序的父程序的程序 ID。正如 Chris 舉例說明的那樣,您可以走得更遠,但 /proc 是特定於 Linux 的。您可以使用如下構造詢問使用者是否退出。
echo "Do you want to exit? (type YES or NO, then Enter)" read answer if test "${answer}" = "YES"; then # insert process killing magic fi # we only get here if the user did not answer "YES"
如果可用,您可以使用 GNU
dialog
使問題更漂亮一些。在這種情況下,請將上面的整個程式碼段替換為以下內容。if dialog --yesno "Do you want to exit?" 10 50; then # insert process killing magic fi # we only get here if the user did not answer "YES"
數字
10 50
指定對話框的大小(分別為行和列)。可能
process killing magic
像.kill $PPID
我假設你的意思是你想殺死腳本派生出來的互動式 shell。我還假設那個 shell 是
bash
.如果您在該 shell 中獲取腳本,只需使用
exit
. 否則,SIGABRT
使用如下方式發送(或另一個會導致 bash 退出的信號)到父 pid(互動式 shell):kill -ABRT "$PPID"
或者,在沒有
$PPID
(這是 Linux 特定的)的 shell 中:read -r _ _ _ ppid _ < "/proc/$$/stat" kill -ABRT "$ppid"