Интересно, мог бы кто-нибудь объяснить, почему цикл while обрабатывает несколько тестовых условий иначе, чем цикл if.У меня есть 2 теста, которые, как я подтвердил, вышли как True и False:
Bash$ test ! -n "$(find . -maxdepth 1 -name '*.xml' -print -quit)"; echo $?
0
Bash$ test ! -e "unsentData.tmp"; echo $?
1
Bash$
Когда я соединил эти 2 теста в оператор if, я получил совокупность False, как и ожидалось:
Bash$ if [ ! -n "$(find . -maxdepth 1 -name '*.xml' -print -quit)" ] && [ ! -e "unsentData.tmp" ]; then echo "True"; else echo "False"; fi
False
Bash$
Теперь, когда я поместил 2 теста в цикл while, я ожидал сна, пока оба условия не были выполнены, но вместо этого я сразу получил истинный результат.
Bash$ while [ ! -n "$(find . -maxdepth 1 -name '*.xml' -print -quit)" ] && [ ! -e "unsentData.tmp" ]; do sleep 1; done; echo -e "All files Exist\n$(ls /opt/pcf/mfe/unsentXmlToTSM/xmlConnection0_TSM/)"
All files Exist
unsentData.tmp
Bash$
Чего мне здесь не хватает?Я просто хочу написать что-то, что ждет, пока 2 условия не будут выполнены, прежде чем оно выйдет из цикла
A