KSH:处理命令时显示等待消息

问题描述 投票:0回答:1

我正在尝试显示一条消息(带有简单回显),例如“正在处理”,该消息将显示为“正在处理”,“正在处理..”,“正在处理...”,然后返回另一种方式,并...直到命令执行完毕。我正在尝试执行的命令是带有'quiet'参数的分支上的简单git克隆,如下所示:

git clone --quiet -b dev src_path dest_path >/dev/null

想法是,无论“处理”之后的点数(1、2或3),它在处理结束时都会停止显示。不知道是否有本地方法可以执行此操作,或者是否很难执行此操作,但是我在KSH脚本中是新手,因此不会理解太复杂的内容(再加上我不是英语流利者)] >

感谢您的回答!


编辑:终于找到了一种方法,也许比我期望的要长一些,但是由于它似乎并不是帮助这种方法的本机方法,所以这是正确的。这就是我的工作(感谢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语句一起显示也感到非常惊讶。 我正在尝试显示一条消息(带有简单回显),例如“正在处理”,该消息将显示为“正在处理”,“正在处理..”,“正在处理...”,然后返回另一种方式,再次...直到命令...
echo ksh
1个回答
0
投票
您可以调整此策略:

print -n "Processing" while true; do print -n "." sleep 5 done

© www.soinside.com 2019 - 2024. All rights reserved.