Почему я не могу запустить команды сценария после вызова исполняемого файла в файле .sh?

Я пытался найти свой путь, но не могу найти ответ. В моем файле .sh я называю исполняемый файл (который работает нормально), но он, кажется, блокирует остальную часть сценария. Я знаю, что вы можете запускать сценарии из терминала в качестве фона, но я не знаю, как запускать исполняемый файл асинхронно. Может кто-то указать мне правильное направление, поскольку я новичок в сценариях оболочки? И заранее благодарю за любой вклад.

if [ -d "/usr/lib/kega-fusion" ];
then
    echo "Directory /usr/lib/kega-fusion exists " ;

    if [ -d "/usr/lib/kega-fusion/logs"];
    then 
        >> /usr/lib/kega-fusion/logs/log.sh && echo `logging successful discovery of directory at $date`
        cd /usr/lib/kega-fusion/ && ./Fusion
    else
        echo "making logs directory"
        echo 'supass' | sudo -kS mkdir -p /usr/lib/kega-fusion/logs
        echo "Creating log.sh"
        echo 'supass' | sudo -kS touch /usr/lib/kega-fusion/logs/log.sh
        echo "Updating permissions"
        echo 'supass' | sudo -kS chmod  755 /usr/lib/kega-fusion/;
        echo 'supass' | sudo -kS chmod  755 /usr/lib/kega-fusion/logs/;
        echo 'supass' | sudo -kS chmod  722 /usr/lib/kega-fusion/logs/log.sh;
        echo "Appending new log date"
        echo 'supass' | sudo -kS >> /usr/lib/kega-fusion/logs/log.sh && echo `logging successful discovery of directory at $date`

        cd /usr/lib/kega-fusion/ && ./Fusion && echo "why doesnt this line run?"
        WID = `xdotool search "Fusion 3.63x"`
        echo $WID
    fi
fi
0
задан 5 May 2019 в 20:48

1 ответ

Любая команда или процесс, который вы выполняете с помощью & amp; Символ в конце строки отправляется на задний план, что позволяет вашему сценарию переходить к следующему шагу, пока вы добавляете '& amp;' продолжает делать свое дело в фоновом режиме.

Например, при выполнении в сценарии оболочки это приводит к появлению строки с таймером сна ПОСЛЕ строки непосредственно под ней. Потому что он имеет & amp; в конце строки он отсылается сам по себе для продолжения работы, в то время как скрипт продолжает идти по линии, занимаясь другими делами. Через 5 секунд после запуска последней строки появляется команда «echo», которая есть у меня во второй строке.

echo "This is a test" sleep 5 && echo "This is a test of the sleep functionality" & echo "This should appear before the sleep test"

Так или иначе, добавьте '& amp;' на все, что вы хотите запустить в фоновом режиме, пока скрипт продолжает делать свое дело. Возможно, вы даже захотите перенаправить вывод этих команд в пользовательский текстовый файл или файл журнала, чтобы его вывод не перегружал терминал, с которым вы взаимодействуете, но у вас все еще есть способ проверить наличие проблем. т.е.

somecommand > somelogfile.txt &

0
ответ дан 5 May 2019 в 20:48

Другие вопросы по тегам:

Похожие вопросы: