Я пытаюсь использовать запуск программ для запуска следующего скрипта:Выполнения сценариев оболочки запуска программ Сбой
#!/bin/sh
## wait for sunset, touch file
NIGHTTIME='/Users/mnewman/Documents/webcam/nighttime.txt'
sunwait civ down 14.98N 102.09E
touch "$NIGHTTIME"
«sunwait» является исполняемым, который работает в фоновом режиме и ждет заката/восход солнца, а затем завершает работу. В этом случае я настраиваю его, чтобы подождать, пока в моем географическом расположении не появится солнечный закат.
Если я запустил этот скрипт из командной строки, он отлично работает. Если я запустил его с помощью Launchd, команда touch запустится до завершения sunwait. Мне нужно, чтобы sunwait закончил, прежде чем выполнить следующую строку. Как мне это сделать?
Вы видите солнечный свет еще в таблице процессов? То есть, как вы знаете, что 'touch' работает до того, как« sunwait »вернется, а не« sunwait »не успевает и рано выйдет в этом случае? –
Я настоятельно рекомендую положить 'exec> /tmp/wait-for-night.log 2> & 1; установите -x' в начале вашего скрипта и просмотрите содержимое '/ tmp/wait-for-night.log' после воспроизведения этого поведения. –
(В стороне - я бы рекомендовал вам использовать строчные имена для переменных, охваченных в вашем скрипте, таких как «NIGHTTIME», имена всех прописных букв, по соглашению, зарезервированы для переменных окружения и встроенных функций, так что с использованием строчных имен для переменных оболочки предотвращает непреднамеренные конфликты). –