如何将shell派生到前景而不是背景?

时间:2018-12-09 20:58:22

标签: shell jobs dash-shell

我想使用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..."

我尝试过的事情:

  • 如果我使用fish &,则脚本的其余部分在前台运行,fish在后​​台运行。
  • 如果我使用fish,脚本将在前台运行fish,但仅在退出fish shell之后才继续执行脚本的其余部分。
  • 如果我使用exec fish,则脚本会在前台运行fish,但不会运行脚本的其余部分,因为fish将替换父级。

请注意,我在脚本中使用的是dash not bash,所以它不应包含任何暴力行为。

0 个答案:

没有答案