Bash에서 작업할 때 사용하는 진행률 표시줄용 bash 스크립트가 있습니다.
#!/bin/bash
prog() {
local w=80 p=$1; shift
printf -v pt "%*s" "$(( $p*$w/100 ))" "";pt=${pt// /.};
printf "\r\e[K|%-*s| %3d %% %s" "$w" "$pt" "$p" "$*";
}
# test loop
for x in {1..100} ; do
prog "$x" traitement en cours...
#sleep .1 # do some work here
#traitement
done ; echo
하지만 지금은 AIX KSH88을 사용하고 있으며 이 스크립트를 변환하려고 시도했지만 몇 가지 오류가 발생했습니다. 좋아요:
pt=${pt// /.}
잘못된 교체품을 받았습니다
pt=$(printf "%*s" "$(( 80*20/100 ))" "")
.printf: 변환 오류
답변1
노력하다:
function prog {
typeset w=80 p="$1" pt= IFS=" "
typeset pc="$((p * w / 100))"
shift
while ((pc)); do pt=$pt.; ((pc-=1)); done
printf "\r\33[K|%-${w}s| %3d%% %s" "$pt" "$p" "$*"
}
# test loop
x=1; while ((x <= 100)); do
prog "$x" traitement en cours...
sleep 1 # do some work here
((x+=1))
done
echo