다음을 사용하여 업그레이드를 설치하는 응용 프로그램을 작성 중입니다.opkg 포장 시스템.
진행률 표시줄을 만들 수 있도록 전체 진행 상황을 확인할 수 있는 방법이 있나요?
답변1
나는 opkg를 처음 접했고 그것이 기본 진행률 표시줄을 제공하는지 잘 모르겠습니다. 내가 본 것 중 가장 가까운 것은 -V
자세한 내용입니다. 더 나은 솔루션이 없는 경우 다음 스크립트(예: 이름이 지정된 파일 jspb
)를 저장하고 실행 가능하게 만든 다음( chmod u+x jspb
) jspb opkg upgrade packagename
get을 호출할 수 있습니다.ㅏ진행 표시 줄.
가지다더 나은 것진행률 표시줄을 만드는 방법이 있는데 뭔가를 쓰고 싶습니다.시뮬레이션진행 표시 줄. 여기에는 한 가지 주요 요구 사항이 있습니다. 즉, 제공한 작업의 진행 상황을 추적할 수 있도록 /proc 의사 파일 시스템이 있어야 한다는 것입니다. 그렇지 않으면 매우 간단하므로 대부분의 쉘에서 작동합니다(bash, ksh, dash 및 Bourne sh에서 테스트). 이식성이 매우 높기 때문에 shellcheck는 스크립트에서 사용되는 "구식" 및 "레거시" 구조에 대해 불평합니다. 이는 맞습니다. 화면의 열을 지능적으로 채웁니다. 업데이트 프로세스 중에 창 크기를 조정해 보세요!
#!/bin/sh
# Jeff's progress bar
# *simulates* a progress bar
# better options:
# https://github.com/Xfennec/progress
# http://www.theiling.de/projects/bar.html
if [ ! -n "$*" ]
then
echo Nothing to do, exiting!
exit 0
fi
if [ ! -d /proc/$$ ]
then
echo Missing /proc, sorry
exit 1
fi
sh -c "$*" &
PID=$!
# give the command a chance to fail immediately, if it will
sleep 1
# dash, Bourne sh do not have $RANDOM
HAVERANDOM=0
if [ -n "$RANDOM" ]
then
HAVERANDOM=1
fi
i=1
while [ -d /proc/$PID ]
do
# simulate progress
if [ $HAVERANDOM ]
then
sleep `expr $RANDOM % 4`
else
sleep `expr $i % 4`
fi
# see if our window got resized
cols=`tput cols`
if [ $i -ge $cols ]
then
printf "\r"
# clear out the old progress bar and start over!
while [ $i -gt 1 ]
do
printf " "
i=`expr $i - 1`
done
printf "\r"
fi
# making progress!
printf "#"
i=`expr $i + 1`
done
# only clear the progress bar it if we wrote something
if [ $i -gt 1 ]
then
pacman=1
printf "\r"
while [ $pacman -lt $i ]
do
printf " "
pacman=`expr $pacman + 1`
done
printf "\r"
fi
마스터 복사가 시작되었습니다.지텁