要將shell腳本做的好玩好看听想,核心就是echo的使用問題腥刹,還有就是一些實(shí)現(xiàn)上的小技巧,從網(wǎng)上學(xué)習(xí)整理了一些做個備份汉买。
一衔峰、Echo
開始shell光標(biāo)閃爍
echo -e "\033[5m . \033[0m"
二、轉(zhuǎn)圈效果
#!/bin/bash
function waiting()
{
i=0
while [ $i -le 100 ]
do
for j in '\\' '|' '/' '-'
do
printf "\t\t\t\t%c%c%c%c%c test waiting %c%c%c%c%c\r" \
"$j" "$j" "$j" "$j" "$j" "$j" "$j" "$j" "$j" "$j"
sleep 0.1
done
let i=i+4
done
}
waiting
三蛙粘、進(jìn)度條效果
通過符號#填充[ ]完成進(jìn)度
#!/bin/bash
i=0
str=""
arry=("\\" "|" "/" "-")
while [ $i -le 100 ]
do
let index=i%4
printf "[%-100s] %d %c\r" "$str" "$i" "${arry[$index]}"
sleep 0.1
let i=i+1
str+="#"
done
echo ""
每個階段有不同顏色區(qū)分進(jìn)度
#!/bin/bash
i=0
str=""
arry=("\\" "|" "/" "-")
while [ $i -le 100 ]
do
let index=i%4
if [ $i -le 20 ]; then
let color=44
let bg=34
elif [ $i -le 45 ]; then
let color=43
let bg=33
elif [ $i -le 75 ]; then
let color=41
let bg=31
else
let color=42
let bg=32
fi
printf "\033[${color};${bg}m%-s\033[0m %d %c\r" "$str" "$i" "${arry[$index]}"
usleep 30000
let i=i+1
str+="#"
done
echo ""
按照百分比顯示進(jìn)度
printf %3d為顯示百分比預(yù)留了3位垫卤,循環(huán)條件i每次遞增5主要是為了減少進(jìn)度條顯示的長度。
i每次遞增5出牧,取模之后的index值還是依次循環(huán)穴肘,保證了轉(zhuǎn)圈圈的方向和頻率。
改用其他數(shù)字舔痕,轉(zhuǎn)圈的顯示效果沒有add=4n+1時的好评抚。
#!/bin/bash
i=0
str=""
arry=("|" "/" "-" "\\")
while [ $i -le 100 ]
do
let index=i%4
printf "%3d%% %c%-20s%c\r" "$i" "${arry[$index]}" "$str" "${arry[$index]}"
sleep 0.2
let i=i+5
str+="*"
done
echo ""
進(jìn)度條遞進(jìn)填充
- stty size獲取終端X軸和Y軸長度
- total=total_stdx-2head 用來控制整個進(jìn)度條的長度,左右各預(yù)留了head長度
- per和remain相加永遠(yuǎn)是total大小
- y;xH設(shè)置光標(biāo)位置伯复,
${total_stdy};0H
設(shè)置光標(biāo)在終端的左下角 -
%${n}s
指定了寬度為n個字符慨代,%${per}s+%${remain}s
的總寬是total不變的 - 設(shè)置兩個不同顏色的寬度區(qū)域,用來顯示進(jìn)度變化啸如,參數(shù)賦值空字符串
#!/bin/bash
total_stdy="$(($(stty size|cut -d' ' -f1)))"
total_stdx="$(($(stty size|cut -d' ' -f2)))"
head="Progress bar: "
total=$[${total_stdx} - ${#head}*2]
i=0
loop=100
while [ $i -lt $loop ]
do
let i=i+1
per=$[${i}*${total}/${loop}]
remain=$[${total} - ${per}]
printf "\r\e[${total_stdy};0H${head}\e[42m%${per}s\e[47m%${remain}s\e[00m" "" ""
sleep 0.1
done
echo ""
原文地址:http://yangtze736.github.io/%E6%8A%80%E6%9C%AF/2018/05/02/shell-tips/