Как раскошелиться на передний план вместо фона? - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу использовать сценарий оболочки, чтобы проверить, является ли он интерактивным.Если это так, он должен породить 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 для скрипта, поэтому он не должен содержать никаких ошибок.

...