UNIX - До тех пор, пока условие цикла не ожидает целое число из строки? - PullRequest
0 голосов
/ 06 июня 2019

Итак, у меня есть некоторый код, который должен проверить, завершена ли последовательность предварительной проверки, прежде чем я начну исправлять сервер.Я делаю это с помощью цикла до, и в качестве условия у меня установлен флаг 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 НЕ заключено в двойные кавычки?

Любая помощь будет в значительной степени получена.

...