Kill

從命令提示符退出的 Unix 命令

  • April 21, 2013

如何從 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"

如果可用,您可以使用 GNUdialog使問題更漂亮一些。在這種情況下,請將上面的整個程式碼段替換為以下內容。

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"

引用自:https://unix.stackexchange.com/questions/72842