Bash에서 진행률 표시줄 만들기

Bash에서 진행률 표시줄 만들기

Bash를 사용하여 진행률 표시줄을 만드는 방법은 무엇입니까?

이것은 내 스크립트입니다.

#!/bin/bash
 pass='number1 number12 number13 number14 number15 number16'
 chk='number14'
 for i in $pass ; do
   if [ "$i" == "$chk" ]; then
     echo ' Found ^_^'
   else
     echo 'loading 50%'
   fi
 done

echo 'loading 50%'진행률 표시줄을 만들기 위해 무엇이든 바꾸고 싶습니다 .

답변1

당신이 사용할 수있는대화 도서관.

간단한악기 위젯이는 귀하의 요구에 적합할 수 있습니다.

예를 들어:

( 
  echo 12 ; 
  sleep 2 ; 
  echo 34 ; 
  sleep 2 ; 
  echo "XXX" ;
  echo "working for you" ; 
  echo "XXX" ; 
  echo 50 ; 
  sleep 5 ; 
  echo 95 ; 
  sleep 1 ; 
  echo 100 ;
) | dialog --gauge "some progress" 6 50

대부분의 배포판에는 (패키지 관리자를 통해) 설치할 수 있는 패키지가 있습니다.

답변2

이게 네가 말하는거야? "Found"라는 줄은 루프를 계속해도 좋지 않지만 거기에서 무엇을 하고 싶은지 모르겠습니다.

#!/bin/bash
pass='number1 number12 number13 number14 number15 number16'
chk='number14'
max=0
for i in $pass ; do
    let max=$max+1
done
index=0
strdone="#########################"
strtodo="-------------------------"
for i in $pass ; do
    let index=$index+1
    if [ "$i" == "$chk" ]; then
        echo ""
        echo ' Found ^_^'
    else
        lendone=$((index * ${#strdone} / max))
        let lentodo=${#strdone}-$lendone
        percent=$((index * 100 / max))
        echo -ne "[#${strdone:0:$lendone}${strtodo:0:$lentodo}] $percent%\r"
    fi
    sleep 1
done
echo ""

출력은 끝에 있습니다:

[#############-------------] 50%
 Found ^_^
[##########################] 100%

관련 정보