使用 Shell 指令碼實現安裝進度指示器
阿新 • • 發佈:2020-12-18
一、安裝過程中使用旋轉線來表示進度
本文原文連結: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