
암호:
$i
이는 count 변수가 5에 도달하면 멈추고 향후 셸 코드를 계속 실행하는 애니메이션을 만드는 것입니다 .
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곳에서 끊어질 수 있습니다(루프/내부 루프 중단의 경우).
- 외부 루프/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: 스크립트를 종료하는 종료를 사용하여 종료할 수 있습니다.
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
해봐.