dsm*_*k80 48
这适用于 Bash shell:
secs=$((5 * 60))
while [ $secs -gt 0 ]; do
echo -ne "$secs\033[0K\r"
sleep 1
: $((secs--))
done
Run Code Online (Sandbox Code Playgroud)
特殊字符\033[0K表示行尾,如果前一个输出中还有任何字符,它会清除行的其余部分,\r是一个回车,将光标移动到行的开头。stackoverflow.com 上有一个关于此功能的好帖子。
您可以在 while 循环中添加自己的命令或其他任何命令。如果您需要更具体的东西,请向我提供更多详细信息。
rah*_*huL 13
这是一个改进了正确的输出格式 (HH:MM:SS) 并带有适当的前导零和支持小时数的方法:
#!/bin/bash
m=${1}-1 # add minus 1
Floor () {
DIVIDEND=${1}
DIVISOR=${2}
RESULT=$(( ( ${DIVIDEND} - ( ${DIVIDEND} % ${DIVISOR}) )/${DIVISOR} ))
echo ${RESULT}
}
Timecount(){
s=${1}
HOUR=$( Floor ${s} 60/60 )
s=$((${s}-(60*60*${HOUR})))
MIN=$( Floor ${s} 60 )
SEC=$((${s}-60*${MIN}))
while [ $HOUR -ge 0 ]; do
while [ $MIN -ge 0 ]; do
while [ $SEC -ge 0 ]; do
printf "%02d:%02d:%02d\033[0K\r" $HOUR $MIN $SEC
SEC=$((SEC-1))
sleep 1
done
SEC=59
MIN=$((MIN-1))
done
MIN=59
HOUR=$((HOUR-1))
done
}
Timecount $m
Run Code Online (Sandbox Code Playgroud)
给出如下所示的输出:
02:04:15
Run Code Online (Sandbox Code Playgroud)