Как проверить, существуют ли два файла в каталоге, используя цикл while? - PullRequest
0 голосов
/ 29 апреля 2019

Настоящим мой код:

while [ -f  $load_extract_process ] || [ -f $Sr_details_update_process ]
do
sleep 3s
echo "mango"
done
echo "completed"

Я хочу проверить, присутствует ли один из триггеров. В этом случае перейдите в спящий режим, иначе выведите «выполнено».

1 Ответ

1 голос
/ 29 апреля 2019

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

while ! [ -f /tmp/a1 ] || [ -f /tmp/a2 ]; do sleep 1; echo sleeping; done

Вместо ! и || оболочки можно также использовать параметры из теста ([ - это просто псевдоним для test):

while [ ! -f /tmp/a1 -a ! -f /tmp/a2 ]; do sleep 1; echo sleeping; done

Обратите внимание, что ! теперь обрабатывается тестом ([), а не оболочкой, а -a означает и .Вы сами решаете, какая из двух реализаций вам понятнее (на мой взгляд, вторая).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...