Unix命令退出命令提示符

Unix命令退出命令提示符

如何从 shell 文件的命令提示符退出?

shell 文件包含:

if(); then
// some unix code here
else
// want to exit from cmd prompt or Kill current cmd prompt
fi

有谁知道@它吗?

答案1

我假设您的意思是您想要终止脚本派生的交互式 shell。我还假设那个 shell 是bash.

如果您在该 shell 中获取脚本,只需使用exit.否则,SIGABRT使用如下方式发送(或另一个将导致 bash 退出的信号)到父 pid(交互式 shell):

kill -ABRT "$PPID"

或者,在没有的 shell 中$PPID(这是 Linux 特有的):

read -r _ _ _ ppid _ < "/proc/$$/stat"
kill -ABRT "$ppid"

答案2

喜欢克里斯·唐,我假设您正在使用 GNU bash。其他shell可能会有所不同,但总体思路应该是一样的。

在bash中,环境变量$$包含当前正在运行的进程的进程ID,并且$PPID包含正在运行的父进程的进程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

相关内容