在Linux机器上的bash +进度对话框栏(bash + progress dialog bar

2019-10-21 00:11发布

该脚本run_tasks.bash阅读文本文件

该脚本需要逐行读取文本文件,并在文本文件中执行脚本

关于file.txt的一个重要言论

线路中的TXT文件编号可能是不同的

例如在TXT文件中的第一个运行的线可以是12

在TXT文件中的第二行驶线路可以是例如213,等等.....

   ./run_tasks.bash   /tmp/file.txt

文本文件的例子 - file.txt的

 1 /tmp/run.sh
 2 /var/tmp/load_run.pl
 3 /etc/RT/LM.pl
 .
 .

我想要做的是,说明txt文件的任务数的过程对话框进度

例如,如果在txt文件任务(行)的数目是34然后对话过程将根据34个任务从0开始%至100%

要么

如果任务在TXT(行)的数目是321,则对话过程中会从0%到100%参考321级的任务开始

另一件事对话框需要查看每一个破坏脚本的对话框中

请指点如何根据我的要求建立的对话框代码

平均而我有以下的对话框代码,但我不知道如何在txt文件符合这个代码到不同的任务(行)

 #!/bin/sh
 #A gauge Box example with dialog
 (
  c=10
 while [ $c -ne 110 ]
   do
     echo $c
     echo "###"
     echo "$c %"
     echo "###"
     ((c+=10))
      sleep 1
done
  ) |
 dialog --title "A Test Gauge With dialog" --gauge "Please wait ...." 10 60 0

Answer 1:

这是数学的问题;)在items我已经把你要处理的项目总数。 你可能想有类似items=$(wc -l file.txt)那里。 要处理的行数转换成百分比,我做$(( $processed * 100 / $items)) 注意顺序,因为我们只有整数通常的处理/项目* 100将无法正常工作。

#!/bin/bash

(
    items=123
    processed=0
    while [ $processed -le $items ]; do
        pct=$(( $processed * 100 / $items ))
        echo "XXX"
        echo "Processing item $processed"
        echo "XXX"
        echo "$pct"
        processed=$((processed+1))
        sleep 0.1
    done
) | dialog --title "Gauge" --gauge "Wait please..." 10 60 0


文章来源: bash + progress dialog bar in linux machine