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
#
然后卡在 # 中,我可以输入更多文本,但它什么也没做。
你的代码在死循环中运行:因为name1
和name2
一开始就不相等,所以你不会进入if-then-else的then
块.因此,exit
永远不会得到值 1。
附带说明:由于 exit
是一个 shell 内置函数,您应该为该变量取一个不同的名称以避免混淆。
我得到了这个循环,但出于某种原因,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
#
然后卡在 # 中,我可以输入更多文本,但它什么也没做。
你的代码在死循环中运行:因为name1
和name2
一开始就不相等,所以你不会进入if-then-else的then
块.因此,exit
永远不会得到值 1。
附带说明:由于 exit
是一个 shell 内置函数,您应该为该变量取一个不同的名称以避免混淆。