Сценарий:
У меня есть скрипт оболочки, работающий на встроенном Linux.Скрипт запускает приложение, для которого необходимо состояние переменной.
Код:
Так что я делаю это так
#!/bin/sh
start_my_app=false
wait_for_something=true
while $wait_for_something; do
wait_for_something=$(cat /some/path/file)
if [ "$wait_for_something" = "false" ]
then
echo Waiting...
elif [ "$wait_for_something" = "true" ]
then
echo The wait has ended
wait_for_something=false
start_my_app=true
else
fi
done
if [ "$start_my_app" = "true" ]
then
/usr/bin/MyApp
fi
#End of the script
/some/path/file
имеет значение false
и в некоторых случаях превращается в true
секунд другим скриптом в другом компоненте.И тогда, как логика идет wait_for_something
в моем сценарии становится true
и /usr/bin/MyApp
запускается.
Проблема и, следовательно, вопрос:
Но я хочу сделатьэто лучше.
Я не хочу бесконечно ждать в цикле while, ожидая, что значение контента в /some/path/file
будет установлено true
через некоторое время.
Я хочу подождать, пока значение содержимого в /some/path/file
будет установлено true
, всего на 5 секунд.Если /some/path/file
не содержит true
в течение 5 секунд, я хочу получить значение start_my_app
, равное false.
Как мне добиться этой функциональности в сценарии оболочки на linux?
PS:
Весь мой сценарий выполняется в фоновом режиме другим сценарием