Итак, у меня есть некоторый код, который должен проверить, завершена ли последовательность предварительной проверки, прежде чем я начну исправлять сервер.Я делаю это с помощью цикла до, и в качестве условия у меня установлен флаг true.Когда флаг установлен в значение false, это означает, что предварительные проверки выполнены, и теперь я могу выйти из цикла до.
Проблема в том, что я застрял в бесконечном цикле и получаю сообщение об ошибке, в котором говорится:[: true: ожидается целочисленное выражение
Я постоянно вызываю URL, чтобы выполнить свои проверки, и он возвращает файл, который я сохраняю.Пример извлечения из этого файла:
inProgress":true,"status":"IN_PROGRESS","preCheckMessages":[],"precheckResultItems":[]}
Часть, из которой я должен извлечь это значение из поля inProgress (которое может быть 'true' или 'false').Затем я использую это значение для сравнения с моим флагом.Поэтому я извлекаю значение из поля inProgress.
Раздел кода, вызывающий у меня проблему, выглядит следующим образом:
inProgress="true"
until [ "$inProgress" -eq "false" ]
do
long_URL_goes_here > jobIdCheck.txt
inProgress=$(grep -o 'inProgress.*$' jobIdCheck.txt)
word="inProgress\":"
tempVar=${inProgress##${word}}
inProgress=${tempVar%%,*}
echo inProgress value = ${inProgress}
done
echo "Pre-checks complete. Ready to apply patch"
Именно здесь я попал в бесконечный цикл с сообщением об ошибке, говорящим[: true: ожидается целочисленное выражение.(Я никогда не вижу сообщение «Предварительная проверка завершена»)
Но я не понимаю, почему ожидалось целое число?Конечно, сравнения строк должно быть достаточно?
Важен ли тот факт, что значение true в поле inProgress НЕ заключено в двойные кавычки?
Любая помощь будет в значительной степени получена.