linux - bash + linux机器中的进度对话框栏

标签 linux bash shell dialog

脚本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

最佳答案

这是一个数学问题 ;) 在 items 中,我输入了您要处理的项目总数。您可能希望在那里有类似 items=$(wc -l file.txt) 的内容。要将已处理的行数转换为百分比,我执行 $(( $processed * 100/$items))。请注意顺序,因为我们只有整数,所以通常的 processed/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

关于linux - bash + linux机器中的进度对话框栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870077/

相关文章:

linux - 创建新日志名称时,以增量编号更改名称日志名称

java - Itext 从现有的 pdf 中获取字段坐标

linux - 为命令行提示符设置PS1变量时如何获取光标坐标?

bash - Bash 中的 $@ 是什么?

c - 带有 echo 和 md5sum 的 Execlp

linux - shell脚本中mv命令的问题

linux - Shell 代码在控制台中有效,但在脚本中无效

linux - 获取 "-("和 ")-"之间的字符串,linux 目录

java - 使正则表达式在 Windows 和 Linux 上兼容

regex - 我正在尝试使用包含 "awk"的 shell 脚本来针对文件运行