Spinner Animation and echo command

后端 未结 1 900
梦谈多话
梦谈多话 2020-12-20 07:39

This is a part of my bash file. The output I need is:

[ - ] Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ☆Stack Overflow

相关标签:
1条回答
  • 2020-12-20 08:03

    Continuing from the comment. To avoid calling ps, awk and grep on every iteration, you need to pass the PID as an argument to the spin function. (and you can pass a string to display and default to your string as well). I would do something similar to:

    #!/bin/bash
    
    ## spinner takes the pid of the process as the first argument and
    #  string to display as second argument (default provided) and spins
    #  until the process completes.
    spinner() {
        local PROC="$1"
        local str="${2:-'Copyright of KatworX© Tech. Developed by Arjun Singh Kathait and Debugged by the ☆Stack Overflow Community☆'}"
        local delay="0.1"
        tput civis  # hide cursor
        printf "\033[1;34m"
        while [ -d /proc/$PROC ]; do
            printf '\033[s\033[u[ / ] %s\033[u' "$str"; sleep "$delay"
            printf '\033[s\033[u[ — ] %s\033[u' "$str"; sleep "$delay"
            printf '\033[s\033[u[ \ ] %s\033[u' "$str"; sleep "$delay"
            printf '\033[s\033[u[ | ] %s\033[u' "$str"; sleep "$delay"
        done
        printf '\033[s\033[u%*s\033[u\033[0m' $((${#str}+6)) " "  # return to normal
        tput cnorm  # restore cursor
        return 0
    }
    
    ## simple example with sleep
    sleep 5 &
    
    spinner $!
    

    (it displays in blue -- but you can delete the first printf to remove the color)

    0 讨论(0)
提交回复
热议问题