Я хочу использовать сценарий оболочки, чтобы проверить, является ли он интерактивным.Если это так, он должен породить fish
и продолжить оставшуюся часть сценария в фоновом режиме.В противном случае он не должен запускать fish
и продолжать выполнение остальной части сценария.
Как проверить, является ли оболочка интерактивной:
#!/bin/sh
case $- in
*i*) echo "interactive" ;;
*) echo "non-interactive" ;;
esac
Теперь я хочу создать другуюОболочка в переднем плане , если она является интерактивной, и продолжает выполнение остальной части сценария в фоновом режиме.
В этом примере он будет ждать, пока я выйду из fish
для запуска echo "continue...
.
#!/bin/sh
case $- in
*i*) fish ;;
*) ;;
esac
echo "continue..."
То, что я пробовал:
- Если я использую
fish &
, остальная часть сценария выполняется на переднем плане, а fish
- на заднем плане. - Если я использую
fish
, сценарий запускает fish на переднем плане, но продолжает работу только после выхода из оболочки fish
. - Если я использую
exec fish
, скрипт запускает fish на переднем плане, но не запускает остальную часть скрипта, потому что fish
заменяет родителя.
Обратите внимание, что я использую dash
и not bash
для скрипта, поэтому он не должен содержать никаких ошибок.