shell 写一个进度条 不覆盖
时间: 2024-04-30 13:21:06 浏览: 7
以下是一个简单的 shell 脚本,可以实现一个进度条不覆盖输出:
```bash
#!/bin/bash
echo -n "Progress: "
for i in {1..50}
do
echo -n "#"
sleep 0.1
done
echo ""
```
这个脚本会输出一个进度条,长度为 50,每个 '#' 代表完成了 2% 的进度。在输出时不会覆盖之前的内容,而是一直向右边扩展。每输出一个 '#' 后,脚本会暂停 0.1 秒,以便观察进度条的变化。
相关问题
shell 写一个进度条 百分比
以下是一个简单的 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个进度,每完成一个进度就会输出一个 "#",并且在进度条前面输出当前进度的百分比。我们可以根据需要修改这段代码,适配自己的需求。