首页 > 解决方案 > 如何将外壳分叉到前台而不是后台?

问题描述

我想使用 shell 脚本来检查它是否是交互式的。如果是这样,它应该生成一个fish并在后台继续脚本的其余部分。否则,它不应该运行fish并继续运行脚本的其余部分。

我如何检查外壳是否是交互式的:

#!/bin/sh

case $- in
    *i*) echo "interactive" ;;
    *) echo "non-interactive" ;;
esac

现在,如果它是交互式的,我想在前台生成一个不同的 shell ,并继续在后台运行脚本的其余部分。

在这个例子中,它会等到我退出fish运行echo "continue...

#!/bin/sh

case $- in
    *i*) fish ;;
    *) ;;
esac

echo "continue..."

我尝试过的事情:

请注意,我使用的是脚本dash不是 bash脚本,因此它不应包含任何 bashisms。

标签: shelljobsdash-shell

解决方案


推荐阅读