在 bash 中显示和更新计数器

Lan*_*nes 7 shell bash terminal control-flow

我认为它是这样的:(Fedora14/bash)

#!/bin/bash

for i in {0..10..1}; do echo -e "$i"'\c'
echo -e "\n\r"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)

但它不起作用。目的:像这样,但没有“明确”:

#!/bin/bash

for i in {0..10..1}; do echo -e "$i"
sleep 1
clear
done
Run Code Online (Sandbox Code Playgroud)

因此,一个计数脚本不会删除整个屏幕以输出 +1 个数字,而是只删除计数所在的行,因此可能会出现例如:一个漂亮的“进度条”..

use*_*own 11

for i in {0..15}; do echo -ne "$i"'\r'; sleep 1; done; echo 
Run Code Online (Sandbox Code Playgroud)

对于默认的步宽 1,您不需要 ..1 。

echo -n 
Run Code Online (Sandbox Code Playgroud)

防止换行。

\r返回到行首(没有换行符 - \n),并且比我以前使用的 '\b' 更好地后退单个字符,如果您有多个数字,则不方便。感谢 rozcietrzewiacz。