이것은 평범한 Bash에서하는 것이 다소 간단합니다.
#!/bin/bash # progress bar function prog() { local w=80 p=$1; shift # create a string of spaces, then change them to dots printf -v dots "%*s" "$(( $p*$w/100 ))" ""; dots=${dots// /.}; # print those dots on a fixed-width space plus the percentage etc. printf "\r\e[K|%-*s| %3d %% %s" "$w" "$dots" "$p" "$*"; } # test loop for x in {1..100} ; do prog "$x" still working... sleep .1 # do some work here done ; echo
prog
는 백분율이며 나머지는 진행률 표시 줄 뒤에 인쇄됩니다. 함수의 변수 w
는 막대의 너비를 제어합니다. “완료된 후 개행을 인쇄하십시오. 함수는 하나를 인쇄하지 않습니다.
또 다른 가능성은 pv
도구를 사용하는 것입니다. 파이프 라인의 처리량을 측정하기위한 것이지만이를 위해 생성 할 수 있습니다.
for x in {1..100} ; do sleep .1 # do some work here printf . done | pv -pt -i0.2 -s100 -w 80 > /dev/null
여기, -pt
는 진행률 표시 줄과 타이머를 활성화하고, -s 100
는 총 출력 크기를 설정하며 함수 내에서 인쇄하는 모든 항목이 해당 크기에 포함됩니다.
일반적으로 줄을 덮어 써서 구현할 수 있습니다. 시작 부분으로 돌아가려면 \r
를 사용하세요. 터미널에 \n
를 쓰지 않고 줄을 입력합니다.
줄을 진행하기 위해 완료되면 \n
를 씁니다.
echo -ne
사용 :
여기 데모 :
echo -ne "... (33%)\r" sleep 1 echo -ne "...... (66%)\r" sleep 1 echo -ne ".......... (100%)\r" echo -ne "\n"
편집 : 이제 cURL에는 진행률 표시 줄이 함께 제공됩니다. --progress-bar
, 원하는 것이 아니십니까?
답변 t에서 가져옴 o https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script
Google에서 첫 번째 답변을 찾았으며 다음 검색어를 사용했습니다. “bash 진행률 표시 줄”