我想使用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
,所以它不应包含任何暴力行为。