shell 写一个进度条 百分比
时间: 2023-08-19 18:55:59 浏览: 172
以下是一个简单的 shell 脚本,它可以显示进度条和百分比:
```shell
#!/bin/bash
# 设置进度条的长度
progress_bar_length=20
# 计算总共需要处理多少个任务
total_tasks=100
# 循环处理每个任务
for i in $(seq 1 $total_tasks)
do
# 计算当前进度
progress=$((i * 100 / total_tasks))
# 计算当前进度条的长度
progress_bar=$(printf "%-${progress_bar_length}s" "")
progress_bar=${progress_bar// /#}
progress_bar=${progress_bar:0:progress_bar_length}
# 输出进度条和百分比
echo -ne "[$progress_bar] $progress% \r"
# 模拟任务处理
sleep 0.1
done
# 输出完成信息
echo "Done!"
```
在上面的脚本中,我们设置了进度条的长度为 20,总共需要处理 100 个任务。然后,我们使用 `seq` 命令来循环处理每个任务,在每个任务处理完毕后,我们计算当前进度并输出进度条和百分比。最后,我们输出完成信息。
注意,在输出进度条和百分比时,我们使用了 `\r` 来使光标回到行首,这样可以让进度条一直在同一行上更新。
相关问题
linux c shell实现一个进度条
下面是一个简单的示例代码,可以在 Linux C Shell 中实现一个进度条:
```c
#include <stdio.h>
#include <unistd.h>
void progress_bar(int total)
{
int i;
for (i = 0; i <= total; i++) {
printf("\r[");
int j;
for (j = 0; j <= i; j++) {
printf("#");
}
for (j = i+1; j <= total; j++) {
printf(" ");
}
printf("] %d%%", i*100/total);
fflush(stdout);
usleep(10000);
}
printf("\n");
}
int main()
{
progress_bar(50);
return 0;
}
```
这段代码实现了一个进度条,总共有50个进度,每完成一个进度就会输出一个 "#",并且在进度条前面输出当前进度的百分比。我们可以根据需要修改这段代码,适配自己的需求。
shell脚本编程 完成一个进度条程序
在Shell脚本编程中,创建一个简单的进度条程序通常会利用`echo`命令配合一些转义字符来模拟动态显示进度。以下是一个基本的例子,它会在终端上打印出一个简单的百分比进度条:
```bash
#!/bin/bash
# 设定总任务数和当前进度
total_tasks=100
current_task=0
# 更新进度函数
function update_progress {
local percent=$(( (current_task / total_tasks) * 100 ))
echo -ne "\r["
for (( i=0; i<percent; i++ )); do
echo -n "#"
done
for (( j=100-percent; j>0; j-- )); do
echo -n "."
done
echo "] $percent% completed" -n $(($percent < 10 ? ' ' : '')) >&3
}
# 示例循环并更新进度
for (( current_task=0; current_task<=total_tasks; current_task++ )); do
update_progress
# 假设每个任务需要花费1秒,这里只是为了演示进度,实际操作可以根据实际耗时替换
sleep 1
done
# 清除行尾的换行符
echo
```
这个脚本定义了一个`update_progress`函数,每次迭代都会增加当前任务计数,并相应地更新进度条。`echo -ne`用于非换行输出,`\r`用于回车到行首,`>&3`将输出定向到标准错误流,使得进度条不会被新输入覆盖。
阅读全文