我正在尝试显示一条消息(带有简单回显),例如“正在处理”,该消息将显示为“正在处理”,“正在处理..”,“正在处理...”,然后以另一种方式返回,然后...直到命令执行完毕。 我正在尝试执行的命令是带有'quiet'参数的分支上的简单git克隆,如下所示:
git clone --quiet -b dev src_path dest_path >/dev/null
这个想法是,无论“处理”之后的点数(1、2或3)如何,在处理结束时它将停止显示。 不知道是否有本机的方法可以做到这一点,或者这很难做到,但是我在KSH脚本中是新手,所以不会理解太复杂的内容(再加上我不是英语流利者)< / p>
感谢您的回答!
编辑:终于找到了一种方法,可能比我期望的要长一些,但是由于它似乎并不是帮助实现此目的的本机方法,所以这是正确的。这就是我的工作(感谢markp-fuso的关键字帮助)。
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 循环的末尾添加 clear 命令,因为一旦 git clone 完成,该循环返回警告,指出该进程不存在(不再)。因此,我会在警告显示后立即清除,以使其对用户不可见。如果您找到一种捕捉它的方法,那就不客气了!即使使用 / dev / null 语句也能显示它,真的感到很惊讶。
答案 0 :(得分:0)
您可以调整此策略:
print -n "Processing"
while true; do
print -n "."
sleep 5
done