我正在尝试显示一条消息(带有简单回显),例如“正在处理”,该消息将显示为“正在处理”,“正在处理..”,“正在处理...”,然后返回另一种方式,并...直到命令执行完毕。我正在尝试执行的命令是带有'quiet'参数的分支上的简单git克隆,如下所示:
git clone --quiet -b dev src_path dest_path >/dev/null
想法是,无论“处理”之后的点数(1、2或3),它在处理结束时都会停止显示。不知道是否有本地方法可以执行此操作,或者是否很难执行此操作,但是我在KSH脚本中是新手,因此不会理解太复杂的内容(再加上我不是英语流利者)] >
感谢您的回答!
编辑:终于找到了一种方法,也许比我期望的要长一些,但是由于它似乎并不是帮助这种方法的本机方法,所以这是正确的。这就是我的工作(感谢markp-fuso的关键字帮助)。
循环的末尾添加一个clear命令,因为一旦完成[[git clone,该循环将返回一条警告,指出该进程不存在(再)。因此,我会在警告显示后立即清除,以使其对用户不可见。如果您找到一种捕捉它的方法,那就不客气了!它甚至与/ dev / null语句一起显示也感到非常惊讶。 我正在尝试显示一条消息(带有简单回显),例如“正在处理”,该消息将显示为“正在处理”,“正在处理..”,“正在处理...”,然后返回另一种方式,再次...直到命令...git clone --quiet -b dev src_path dest_path >/dev/null & PROC_ID=$! NB=0 WAY=1 while kill -0 "$PROC_ID" >/dev/null; do if [ $WAY = 1 ]; then if [ $NB = 2 ];then WAY=0 fi NB=$((NB+1)) else if [ $NB = 2 ];then WAY=1 fi NB=$((NB-1)) fi echo -ne "Processing" i=1 while [ i -lt $((NB+1)) ]; do echo -ne "." i=$((i+1)) done echo -ne " \r" sleep 0.5 done clear echo -ne "Process complete.\n"
请注意,我必须在while
print -n "Processing"
while true; do
print -n "."
sleep 5
done