shell学习笔记---简单练习

# 练习1:进度条
i=0
bar=''
lable=("|" "/" "-" "\\")
while [ $i -le 100 ]
do
    printf "[%d%%][%c]%s\r" "$i" "${lable[i%4]}" "$bar"
    let i++
    bar=${bar}'#'  # 字符串拼接
    sleep 0.1   # shell 中按秒计算
done
printf "\n"

# 练习2:传入至少3个参数,计算最大最小和平均值
# 需判断传入的参数个数是否足够,否则输出警告
# 平均值保留两位有效小数
if [ $# -lt 3 ];then
    echo "参数太少"
    exit 1
fi
max=$1
min=$1
sum=0
for i in $@
do
    [ $i -lt $min ] && min=$i
    [ $i -gt $max ] && max=$i
    let sum=$sum+$i
done
echo "min="$min
echo "max="$max
# # 使用命令代换(这里使用反引号),bc是计算器
# # ibase=10:按十进制计算,scale=2:保留两位小数
avg=`echo "ibase=10;scale=2;$sum/$#" | bc`
echo $avg

# 练习3:有一列数字如下
# 第一次:1 第二次:2 第三次:3 第四次:5
# 第五次:8 第六次:13...
# 求第100次的数
arr[0]=1
arr[1]=2
for (( i=2;i<=99;i++ ))
do
    #(( arr[$i]=${arr[$i-1]}+${arr[$i-2]} ))
    arr[$i]=`expr ${arr[$i-1]} + ${arr[$i-2]}`
done
echo ${arr[99]}

# 练习4:文件内容如下:123abc456 456def123 
# 要求输出:456ABC123 123DEF456
input="123abc456"
sub1=${input:0:3}
sub2=${input:3:3}
sub3=${input:6:3}
tmp=$sub3$sub2$sub1
echo $tmp | tr 'a-z' 'A-Z'

猜你喜欢

转载自blog.csdn.net/qq_40927789/article/details/80699841