gpt4 book ai didi

linux - BASH 在同一 2 行上打印 2 个字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:22 25 4
gpt4 key购买 nike

我是 BASH 的新手,我想知道如何在相同的 2 行上打印 2 个字符串。

我想做的是在 BASH 中创建一个两行的进度条。创建 1 行进度条相当容易,我是这样做的:

echo -en 'Progress: ###          - 33%\r'
echo -en 'Progress: ####### - 66%\r'
echo -en 'Progress: ############ - 100%\r'
echo -en '\n'

但现在我正在尝试做同样的事情,但有 2 行,到目前为止我尝试的一切都失败了。

在第二行中,我想放置一个“进度详细信息”,告诉我它在脚本中的哪个点,例如:正在收集什么变量,它正在运行什么功能。但我似乎无法创建一个 2 行进度条。

最佳答案

可以使用tputprintf 覆盖双行,例如:

function status() { 
[[ $i -lt 10 ]] && printf "\rStatus Syncing %0.0f" "$(( i * 5 ))" ;
[[ $i -gt 10 ]] && printf "\rStatus Completing %0.0f" "$(( i * 5 ))" ;
printf "%% \n" ;
}

for i in {1..20}
do status
printf "%0.s=" $(seq $i) ;
sleep .25 ; tput cuu1 ;
tput el ;
done ; printf "0%%\n" ; printf " %.0s" {1..20} ; printf "\rdone.\n"

一行:

for i in {1..20}; do status ; printf "%0.s=" $(seq $i) ; sleep .25 ; tput cuu1 ; tput el ; done ; printf "0%%\n" ; printf " %.0s" {1..20} ; printf "\rdone.\n"

循环调用 status 函数以在特定时间显示适当的文本。

结果输出类似于:

Status Completing 70%
==============

关于linux - BASH 在同一 2 行上打印 2 个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com