制作简单的shell进度条

时间:2016-07-12 21:50:12

标签: bash shell progress-bar progressdialog

我可能非常擅长实施此处提到的进度条:How to add a progress bar to a shell script?。但是我非常喜欢我正在制作的shell安装脚本的进度条。它(就外观而言)可能与此类似,

$response->headers->set('Content-Type', 'octet-stream');
$response->setContentDisposition(
  ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  'filename.pdf'
);

我们有进度条,百分比计数器和旋转设备。我非常希望它是模块化的,这样我也可以在其他项目中使用,但也许我会问一些太复杂的事情。其他我不知道它应该如何以及它应该算什么,但我认为简单地计算我的脚本中执行的行数并将这个数字与总行数进行比较会有点聪明,但我当然对其他人开放了。建议。

2 个答案:

答案 0 :(得分:1)

以下是进度条的示例,%counter&微调:

#!/bin/bash

spin() {
    sp='/-\|'
    printf ' '
    while true; do
        printf '\b%.1s' "$sp"
        sp=${sp#?}${sp%???}
        sleep 0.05
    done
}

progressbar()
{
    bar="##################################################"
    barlength=${#bar}
    n=$(($1*barlength/100))
    printf "\r[%-${barlength}s (%d%%)] " "${bar:0:n}" "$1" 
}

spin &
pid=$!

#your task here

for i in `seq 1 100`;
do
    progressbar $i
    sleep 0.1
done

# kill the spinner task
kill $pid > /dev/null 2>&1

Spinner在开始时启动并在结束时停止,每次%更改时都会调用进度条功能。

您可以自定义进度条样式更新"\r[%-${barlength}s (%d%%)] "格式

答案 1 :(得分:0)

您可以根据DirectoryInfo.Parent

查看此时间

它非常流畅,因为它使用progress bar

partial block characters