以下を使用してアップグレードをインストールするアプリケーションを作成しています。opkg包装システム。
進行状況バーを作成できるように、全体の進捗状況を確認する方法はありますか?
答え1
私は最初にopkgに触れ、それが基本的な進行状況バーを提供しているかどうかわかりません。私が見たものの最も近いものは-V
詳細です。より良い解決策がない場合は、次のスクリプト(名前付きファイルなどjspb
)を保存して実行可能にしてから(chmod u+x jspb
)jspb opkg upgrade packagename
getを呼び出すことができます。ㅏ進行状況バー。
持つより良いもの進行状況バーを作成する方法がありますが、何かを書きたいです。シミュレーション進行状況バー。これには1つの主な要件があります。つまり、提供したタスクの進行状況を追跡できるように、/proc 擬似ファイルシステムが必要です。それ以外の場合は非常に簡単なので、ほとんどのシェルで動作します(bash、ksh、dash、およびBourne shでテスト)。移植性が非常に高いため、シェルチェックはスクリプトで使用されている「旧式」および「レガシー」構造について文句を言います。これは正しいです。画面の列をインテリジェントに埋めます。アップデートプロセス中にウィンドウのサイズを変更してみてください。
#!/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
マスターコピーが開始されました。ジタブ