我有以下脚本,它有效,但我不知道它是如何工作的,
计量器使用任何作为包含百分比的变量的神奇之处是什么?
#!/bin/bash -x
cnt="`rpm -qa | wc -l`"
pct="`echo \"100/$cnt\" | bc -l`"
whatever=0
counter=0
for file in `rpm -qa`; do
counter=$((counter+1))
whatever=`echo $whatever+$pct | bc -l`
echo $whatever | cut -d"." -f1
sleep 0.1
echo "XXX"
echo Paquete $counter:
echo $file: $(rpm -V $file)
echo "XXX"
done | dialog --backtitle "Verificando RPMs" --title "Progreso" --gauge "Procesando RPM's ..." 15 70 0
答案 0 :(得分:1)
没有魔力。 for
循环显式地将$whatever
(在小数点处截断)写入dialog
的stdin,dialog
使用从stdin读取的整数流设置仪表位置。
for
循环还会更改指标的文字,方法是在XXX
个标记之间输出新文字。
引自man dialog
(关于--gauge
的部分):
仪表盒显示盒子底部的仪表。仪表显示百分比。从标准输入读取新百分比,每行一个整数。仪表会更新以反映每个新百分比。如果标准输入读取字符串" XXX",则后面的第一行被视为整数百分比,然后是后续行直到另一行" XXX"用于新提示。当标准输入达到EOF时,仪表退出。