我想使用shell脚本来检查它是否是交互式的 . 如果是这样,它应该生成 fish
并在后台继续其余的脚本 . 否则,它不应运行 fish
并继续运行脚本的其余部分 .
我如何检查shell是否是交互式的:
#!/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
而不是 bash
作为脚本,因此它不应包含任何bashisms .