1. 程式人生 > 其它 >使用 Shell 指令碼實現安裝進度指示器

使用 Shell 指令碼實現安裝進度指示器

技術標籤:LinuxShellshelllinux

一、安裝過程中使用旋轉線來表示進度

本文原文連結:https://blog.csdn.net/xzk9381/article/details/111314715

#!/bin/bash

function KILLPROC(){
	echo $1 | xargs kill -9 &> /dev/null
}

function PROC_NAME(){
    printf "%-45s" ${1}
    tput sc
    while true
    do
        for ROATE in '-' "\\"
'|' '/' do tput rc && tput ed printf "\033[1;36m%-s\033[0m" ${ROATE} sleep 0.5 done done } function CHECK_STATUS(){ if [ $? == 0 ];then KILLPROC ${1} &> /dev/null tput rc && tput ed printf "\033[1;36m%-7s\033[0m\n"
'SUCCESS' else KILLPROC ${1} &> /dev/null tput rc && tput ed printf "\033[1;31m%-7s\033[0m\n" 'FAILED' fi } function NGINX_INSTALL(){ PROC_NAME Nginx_Service & PROC_PID=$! apt-get install nginx -y &> /dev/null CHECK_STATUS ${PROC_PID}
} NGINX_INSTALL

二、使用原點來表示進度

本文原文連結:https://blog.csdn.net/xzk9381/article/details/111314715

dots函式每隔一段時間列印一個圓點,這個時間值可以通過第一個引數傳入,否則預設為5秒。在後臺啟動dots函式之後,通過"$!"獲取dots的pid,然後開始執行耗時的工作,在工作執行完畢之後kill掉後臺執行的dots。trap命令是為了防止使用者Ctrl_C中斷指令碼執行的時候dots仍然在後臺執行。

#!/bin/bash
function dots(){
    seconds=${1:-5} # print a dot every 5 seconds by default
    while true
    do
        sleep $seconds
        echo -n '.'
    done
}
 
dots 10 &
BG_PID=$!
trap "kill -9 $BG_PID" INT
 
# Do the real job here
sleep 150
kill $BG_PID
echo