13

インストール スクリプトを作成していて、スクリプトの進行状況を表示したいと考えています。

例:

var1="pending"
var2="pending"
var3="pending"

print_status () {
echo "Status of Item 1 is: "$var1""
echo "Status of Item 2 is: "$var2""
echo "Status of Item 3 is: "$var3""
}

code that does something and then refreshes the
output above as the status of each variable changes.
4

5 に答える 5

3

これを見てください:

while true; do echo -ne "`date`\r"; done

この:

declare arr=(
  ">...."
  ".>..."
  "..>.."
  "...>."
  "....>"
)

for i in ${arr[@]}
do
  echo -ne "${i}\r"
  sleep 0.1
done
于 2013-08-21T16:56:21.810 に答える
1

キャリッジ リターンを使用して、単一のステータス行のテキストを変更できます。

n=0
while true; do
  echo -n -e "n: $n\r"
  sleep 1
  n=$((n+1))
done

すべてのカウンターを一列に並べることができれば

n=0
m=100
while true; do
  echo -n -e "n: $n  m: $m\r"
  sleep 1
  n=$((n+1))
  m=$((m-1))
done

この手法は、複数行に拡張できるようには見えませんが、ダム端末 (Emacs シェルなど) で機能するという tput よりも利点があります。

于 2013-08-21T16:41:01.983 に答える
0

これで問題が完全に解決するわけではありませんが、役立つ場合があります。各コマンドの実行後にステータスを出力するには、PS1 を次のように変更します。

PS1='$PS1 $( print_status )'
于 2013-08-21T16:29:53.863 に答える