在Linux中,
sleep 10
它只是挂在那里10秒钟,我想看到一些进展/状态时,睡觉,可行吗?我不想使用for循环来单独睡眠1。
f2uvfpb91#
以下是我在项目中制作等待动画的方法:sshto和kube-dialog来自here的颜色变量
XY(){ printf "\e[$2;${1}H$3"; } cursor () { case $1 in on) stty echo; printf "$CON";; off) stty -echo; printf "$COF";; esac } x=$[COLUMNS/2-3] y=$[ LINES/2-3] sand=( ⠁ ⠂ ⠄ ' ' ) # { small digits } sd=(₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉) bs='⠴⠷⠦' # bottom sand pile ts='⠖' # top sand pile WAIT(){ clear; cursor off; i=0; start=$SECONDS XY $[x-1] $y $UND$BLD$RED' '$DEF # _______ XY $[x-1] $[y+1] $RED'╲'$DIM$UND' '$DEF$red'╱'$DEF # ╲_____╱ XY $x $[y+2] $BLU'( '$BLD$WHT'•'$BLD$BLU')'$DEF # ( •) XY $x $[y+3] $BLU' ╲'$YLW"$ts"$BLD$BLU'╱'$DEF # ╲⠖╱ XY $x $[y+4] $BLU" ╱$YLW${sand[$i]}$BLD$BLU╲"$DEF # ╱⠂╲ XY $x $[y+5] $BLU'('$YLW"$bs"$BLD$BLU')'$DEF # (⠴⠷⠦) XY $[x-1] $[y+6] $RED'╱'$RED'‾‾‾‾‾'$BLD$RED'╲'$DEF # ╱‾‾‾‾‾╲ XY $[x-1] $[y+7] $DIM$RED'‾‾‾‾‾‾‾'$DEF # ‾‾‾‾‾‾‾ ( while true; do sleep 0.07 printf -v counter "%03d" $[SECONDS-start] small="${sd[${counter:0:1}]}${sd[${counter:1:1}]}${sd[${counter:2:1}]}" XY $[x-1] $[y+1] $RED'╲'$DIM$UND" $small "$DEF$red'╱'$DEF XY $x $[y+4] $BLU" ╱$YLW${sand[$i]}$BLD$BLU╲"$DEF ((i++)); (($i==${#sand[@]})) && i=0; done ) & waiter=$! }
这样使用它:
WAIT; sleep 10; GO
动画看起来像这样:
另一个等待动画的好例子可以在这里找到
1条答案
按热度按时间f2uvfpb91#
以下是我在项目中制作等待动画的方法:sshto和kube-dialog
来自here的颜色变量
这样使用它:
动画看起来像这样:
另一个等待动画的好例子可以在这里找到