Porque ele quebra o loop mais próximo, que é o for
, não o while
. Experimente break 2
.
código:
Isto é para criar alguma animação e quando a variável de contagem $i
obtém 5, ele para e carrega o futuro código de 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.
2 coisas podem ser adicionadas:
solução 1: sem uso de loop 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
solution 2: você pode usar exit para sair e sair do script.
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
Tags shell shell-script