所以,我有一些代码应该在我开始修补服务器之前检查预检查序列是否已经完成。我通过使用 until 循环来执行此操作,并且作为条件,我将标志设置为 true。当标志设置为 false 时,这意味着预检查已完成,我现在可以退出直到循环。
问题是我陷入了无限循环,并且收到一条错误消息,提示 [: true: integer expression expected
我不断地调用一个 URL 来进行我的检查,它会返回一个我保存的文件。从该文件中提取的示例是:
inProgress":true,"status":"IN_PROGRESS","preCheckMessages":[],"precheckResultItems":[]}
我需要从中提取的部分是来自 inProgress 字段的值(可以是“真”或“假”)。然后我使用这个值与我的标志进行比较。所以我从 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: integer expression expected。(我从来没有看到“预检查完成消息”)
但我不明白为什么它会期待一个整数?当然字符串比较就足够了吗?
inProgress 字段中的值 true 未封装在双引号中这一事实是否重要?
任何帮助都将受到极大的欢迎。