我是编程新手。我有这个循环(它是数据处理脚本的一部分),一切都很好,直到这一部分,因为我不明白为什么它在第二个“while”中保持循环
看一看:
.../bash
cdpmin=1800
cdpmax=2100
dcdp=100
cdp=$cdpmin当 [ $cdp -le $cdpmax ]
执行
echo $cdp
ok=falsewhile [ ok=false ]
do
.
.
.
echo "正确吗? (y/n)" | tr -d "\012" >/dev/tty
读取响应case $response in n*) ok=false ;; *) ok=true ;; esac
完毕
cdp=$[$cdp+$dcdp]
完毕
多谢
答案1
你不是在比较你认为的是什么,而是在比较文字“ok”和单词“false”。相反,你需要将变量$ok
与进行比较false
。
经过这样的调整,它看起来会是这样的:
ok="false"
while [[ "$ok" = "false" ]]
do
...
done
我相信你也会遇到错误cdp=$[$cdp + $dcpd]
,在 bash 中,加法通常如下所示:
cdp=$(($cdp + $dcpd))
提示:由于您陷入的循环的条件是ok=false
,很明显问题在于条件没有按预期发生变化。这是那些容易被忽视的问题之一,尽管事后会让人感到尴尬。每当我遇到这些问题时,我都会出去散步或做些别的事情来分散注意力。通常情况下,当我回来时,问题就很明显了。