Linux : Red Hat Enterprise Linux Server версии 6.5 (Сантьяго)
BASH : GNU bash, версия 4.1.2 (1) -релиз (x86_64-redhat-linux-gnu)
Одна из виртуальных машин, которую я только что подготовил, все еще ждет, пока DNS обновит записи своего узла, и одна из них имеет NAS, который смонтирован в папке /project_support
. Доступ к папке /project_support
занимает около 5-10 минут, да, я знаю .
Чтобы моя автоматизация не прервалась из-за этой проблемы, и я не хотел добавлять константу sleep NNN
, я использовал цикл until
, чтобы до монтирования монтирования и до папки /project_support
я хотел спите в течение 5 секунд и проверьте наличие папки, прежде чем продолжить в скрипте / логике автоматизации.
Почему первый цикл until
продолжается и не завершается при проверке состояния, когда команда cd
в заданную папку является успешной или статусом выхода 0
? Второй пока работает должным образом ,
Для 2-го цикла до, даже если я создаю папку (из второго терминала, пока цикл не запущен), она все равно не прерывает цикл до.
[root@nukaserver01 ~]# cd /project_support; echo $?
0
[root@nukaserver01 project_support]# pwd
/project_support
[root@nukaserver01 project_support]# until [ `cd /project_support` ]; do echo '-- sleep 5'; sleep 5; done
-- sleep 5
-- sleep 5
-- sleep 5
^C
[root@nukaserver01 project_support]# until [ `cd /project_support-I-DONT-EXIST-AT-ALL` ]; do echo '-- sleep 5'; sleep 5; done
-bash: cd: /project_support-I-DONT-EXIST-AT-ALL: No such file or directory
-- sleep 5
-bash: cd: /project_support-I-DONT-EXIST-AT-ALL: No such file or directory
-- sleep 5
^C
[root@nukaserver01 project_support]#
Почему я исправляю эту проблему:?
until [ `cd /project_support && pwd` ]; do ...; ...; done