而循环永远不会结束

Sha*_*off 4 bash shell loops while-loop

我正在使用bash,我正在尝试做这样的事情:

A=1
while [ $A=1 ]; do
    read line
    echo $line | grep test >/dev/null   
    A=$?
    echo $A
done 
Run Code Online (Sandbox Code Playgroud)

即使grep成功完成并且A设置为0,此脚本也永远不会结束.我在这里缺少什么?以下是输出示例.

$ ./test.sh
Run Code Online (Sandbox Code Playgroud)

asdf

1
Run Code Online (Sandbox Code Playgroud)

test

0
Run Code Online (Sandbox Code Playgroud)

hm...

1
Run Code Online (Sandbox Code Playgroud)

Dan*_*umb 8

您需要使用正确的比较运算符.Bash有不同的运算符用于整数和字符串比较.

此外,您需要在比较表达式中使用正确的间距.

你需要

while [ $A -eq 1 ]; do
Run Code Online (Sandbox Code Playgroud)

请看这里了解更多


And*_*lam 5

我发现Bash的语法非常糟糕 - 你尝试过类似的东西:

虽然[$ A -eq 1] ......?

它可能会尝试重新分配1到$ A或类似的东西.

  • 或者至少在操作数和`=`运算符之间放置空格. (2认同)