Bash if 语句卡住

Bash if-statement gets stuck

我得到了这个循环,但出于某种原因,if 条件卡住了。 while 循环完美运行。

输入是那些(x、y、z 是每次执行脚本时都会改变的词):

name0="Car name X"

name1="Car name Y"

name2="Car name Z"
        echo $name0
        echo $name1
        echo $name2
while [ $ext -eq 0 ]
do
    if [ "$name1" = "$name2" ]
    then
    ext=1
        name1="`shuf -n 1 cars.csv | cut -d";" -f1`"
        name1c=`echo $name1 | cut -d" " -f1`
        ext=1
    else
        :
    fi
done

编辑循环:

while [ $ext -eq 0 ]
do
    if [ "$name1" != "$name2" ]
    then
        :
    else

        name1="`shuf -n 1 cars.csv | cut -d";" -f1`"
        name1c=`echo $name1 | cut -d" " -f1`
        ext=1
    fi
done

它的输出是这样的(没有#):

Car name 1

Car name 2

Car name 3
#

然后卡在 # 中,我可以输入更多文本,但它什么也没做。

你的代码在死循环中运行:因为name1name2一开始就不相等,所以你不会进入if-then-else的then块.因此,exit 永远不会得到值 1。

附带说明:由于 exit 是一个 shell 内置函数,您应该为该变量取一个不同的名称以避免混淆。