进程条源码:
#!/bin/bash
#Function: Display a progress bar.
#Author: Mach
#Email: mach_aly@aliyun.com
#Created time: 08.12/2017
ProLen=`echo "$1" | wc -m`
PBLen=$(( 80 - "$ProLen" - 13 ))
ProgressBar(){
DisSym=''
for (( i=0; i<="$PBLen"; i=++i ))
do
printf "%s [%-"$PBLen"s]\r" "$1" "$DisSym"
DisSym="=$DisSym"
sleep 0.05
done
}
DisResult(){
DisSym=''
for (( i=0; i<"$PBLen"; i=++i ))
do
DisSym="=$DisSym"
done
printf "%s [%-"$PBLen"s] "$2"\r" "$1" "$DisSym"
}
ResultJudge(){
if [ "$1" = 0 ]; then
Result="\033[1m\033[32m[Succ]\033[0m\n"
else
Result="\033[1m\033[31m[Fail]\033[0m\n"
fi
}
LoopPB(){
while "true"
do
ProgressBar "$1"
done
}
case "$#" in
1)
LoopPB "$1" &
;;
2)
ResultJudge "$2"
kill "$!"
DisResult "$1" "$Result"
;;
*)
echo "Parameter error"
;;
esac
调用方式:
#!/bin/bash
set +m
(
. ./ProgressBar.sh "Prompt information"
sleep 2
. ./ProgressBar.sh "Prompt information" "$?"
)