你好,这是我的主要脚本。 test2.sh只是一个回声"它起作用了#34;
当我尝试从原始循环调用时会发生什么,它会到达正确的文件,然后回显无限的"它起作用"应该只做一次。
知道为什么吗?我真的想要在主脚本之外调用另一个不会干扰的循环,但仍然在学习bash = P
#!/bin/bash
number=1
while true
do
if [ "$number" -eq "1" ]; then
echo "hello 1!"
elif [ "$number" -eq "2" ]; then
echo "hello 2!"
elif [ "$number" -eq "3" ]; then
echo "hello 3!"
elif [ "$number" -eq "4" ]; then
./test2.sh & continue
fi
sleep 5
((number++))
echo $number
done
答案 0 :(得分:1)
第一次观察&
不是逻辑运算符,&
在后台运行precedding命令。使用&&
进行逻辑操作。
您需要的是break
关键字而不是continue
关键字。如果使用break
关键字,循环将停止执行。 continue关键字只会重新执行循环,并且由于number
为4,因此这段代码将始终运行elif [ "$number" -eq "4" ]; then
工作代码
#!/bin/bash
number=1
while true
do
if [ "$number" -eq "1" ]; then
echo "hello 1!"
elif [ "$number" -eq "2" ]; then
echo "hello 2!"
elif [ "$number" -eq "3" ]; then
echo "hello 3!"
elif [ "$number" -eq "4" ]; then
./test2.sh && break
fi
sleep 5
((number++))
echo $number
done
或者你可以这样做
for number in {1..4};do
(( number == 4 )) && ./test2.sh || echo "$number"
sleep 5
done