Я webdev и использую JSX-компилятор и препроцессор SASS для компиляции моих .jsx и .scss . Когда я начинаю работать, я запускаю эти две отдельные команды:

jsx -x jsx jsx js --watch --no-cache-dir
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch

Как вы можете видеть, оба имеют флаг --watch , что означает, что они будут отслеживать свои соответствующие файлы, пока не будут уничтожены. Я хочу иметь возможность использовать сценарий оболочки, который запускает оба этих сценария одновременно. Пока что у меня есть:

#!/bin/sh

echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir
echo "Starting SASS Preprocessor"
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch

но это только выполняет первую программу jsx и не sass , потому что JSX работает. Как я могу запустить обе эти программы типа "смотреть" через шеллскрипт?

1 ответ1

1

Здесь есть две возможности достичь своей цели.

Во-первых, вы можете запустить первую команду в фоновом режиме, просто добавив амперсанд «&» в конце командной строки:

#!/bin/sh 
echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor" 
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &

Делая это, вы можете работать с тем же терминалом, возможно, вывод в sdtout и stderr будет отображаться в терминале, что иногда может быть немного запутанным. Но процессы будут работать в фоновом режиме, пока вы не закроете терминал.

Если этого недостаточно, и вы хотите, чтобы процессы запускались, даже если терминал закрыт, вам нужна дополнительно команда nohup :

#!/bin/sh 
echo "Starting JSX Compiler..."
nohup jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor" 
nohup sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &

Это также запустит ваши процессы в фоновом режиме, вы по-прежнему будете использовать амперсанды в конце команд, но они дополнительно сообщат вашим процессам игнорировать HUP-сигнал. Таким образом, процессы будут работать до тех пор, пока программа не завершится, процесс не будет убит или система не выключится.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .