代码:
这是为了创建一些动画,当 count 变量$i
达到 5 时,它会停止并继续执行未来的 shell 代码。
chars="/-\|"
while :; do
for (( i=0; i<${#chars}; i++ )); do
sleep 0.1
echo -en "${chars:$i:1}" "\r"
if [ $i == 5 ]
then
break
fi
done
done
# code below are never get executed.
答案1
可以添加两件事:
- 由于字符变量最大值为 3(计数从 0 开始到 3 结束 - 总共 4 个字符)。所以它可以在 3 处中断(for 循环/内循环中断)
- 要停止外循环/while 循环,需要一个条件来中断。这里不需要while循环。
解决方案1:不使用while循环
chars="/-\|"
for (( i=0; i<${#chars}; i++ )); do
sleep 0.1
echo -en "${chars:$i:1}" "\r"
if [ $i == 3 ]; then
break;
fi
done
解决方案 2 :您可以使用 exit 退出,这将退出脚本。
chars="/-\|"
while :; do
for (( i=0; i<${#chars}; i++ )); do
sleep 0.1
echo -en "${chars:$i:1}" "\r"
if [ $i == 3 ]; then
exit;
fi
done
done
答案2
因为它打破了最近的循环,即for
,而不是while
。尝试break 2
一下。