답변:
해당 스크립트를 사용하십시오.
#!/bin/bash
chars="/-\|"
while :; do
for (( i=0; i<${#chars}; i++ )); do
sleep 0.5
echo -en "${chars:$i:1}" "\r"
done
done
while
루프는 무한 루프 실행됩니다. for
루프가 실행은 주어진 문자열의 각 문자 물마루 $chars
. echo
캐리지 리턴 \r
을 사용하지만 줄 바꿈 없이 문자를 인쇄합니다 -n
. -e
echo가와 같은 이스케이프 시퀀스를 해석하도록 \r
합니다. 각 변경 사이에 0.5 초의 지연이 있습니다.
echo
했지만 ... 물론 printf
작동합니다. ^^
다음 \b
은 동일한 문자를 계속 덮어 쓰기 위해 터미널 에뮬레이터가 커서를 한 열 왼쪽으로 이동하도록 지시하는을 사용하는 예 입니다.
#!/usr/bin/env bash
spinner() {
local i sp n
sp='/-\|'
n=${#sp}
printf ' '
while sleep 0.1; do
printf "%s\b" "${sp:i++%n:1}"
done
}
printf 'Doing important work '
spinner &
sleep 10 # sleeping for 10 seconds is important work
kill "$!" # kill the spinner
printf '\n'
자세한 내용은 BashFAQ 34 를 참조하십시오 .
spinner &
, pid를 로컬 변수에 저장 spinner_pid=$!
한 다음 kill call을kill $spinner_pid &>/dev/null
tput civis #hide cursor
하고 싶습니다tput cnorm #show cursor
printf "%s\r" "${chars:$i:1}"
않습니까?