版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LLZK_/article/details/66972423
1、计算1+2+3+4....+100的结果:
函数递归法:(参数从命令行传入)
sum=0
function fun
{
if [ $1 -eq 0 ];then
echo $sum
else
let sum+=$1
fun $(($1-1))
fi
}
fun $1
2、编写简单进度条(+配色)
#!/bin/bash
bar=''
i=0
f=('|' '/' '-' '\\')
while [ $i -le 100 ]
do
let index=i%4
#printf "[%d%%][\e[47;46;1m%-100s\e[0m]][%c]\r" $i "$bar" "${f[$index]}"
printf "[%d%%][\033[47;46;5m%-100s\033[0m][%c]\r" $i "$bar" "${f[$index]}"
bar=${bar}'#'
let i++
sleep 0.1
done
printf "\n"
结果:
3、 传入至少三个数字参数到脚本file,并计算出最大,最小,平均值。需要判断
传入的数字是否足够,否则输出警告信息。平均值保留两位⼩数。
如执行./file 3 4 6 5,输出结果如下:
max is 6
min is 3
4.50
#!/bin/bash
sum=0
if [ $# -lt 3 ] ;then
echo "PLease input 3 numbers"
else
min=$1
max=$1
for i in $@
do
if [ $i -lt $min ] ;then
min=$i
elif [ $i -gt $max ] ;then
max=$i
else
:
fi
let sum+=$i
done
printf "max is %d\n" $max
printf "min is %d\n" $min
#echo $sum
arr=$(($sum/$#))
echo "ibase=10;scale=2;$sum/$#" | bc #ibase控制输出显示的进制 scale 控制精度
fi
4、求斐波那契数列的第n个值
n通过命令行参数传入
#!/bin/bash
sum=0
i=$1
first=1
second=1
third=2
if [ $1 -eq 1 ] || [ $1 -eq 2 ];then
sum=1
echo $sum
exit 1
fi
while [ $i -ge 2 ]
do
((third=first+second))
#echo $third
first=$second
#echo $first
second=$third
#echo $second
let i--
done
echo $third
5、 文件内容如下:
123abc456
456def123
567abc789
456def123
567abc789
789def567
要求从文件中读取内容并输出:
456ABC123
123DEF456
789ABC567
456ABC123
123DEF456
789ABC567
567DEF789
#!/bin/bash
while read line
do
typeset -u b
b=${line:3:3}
a=${line:0-3:3}
c=${line:0:3}
#echo $b
echo ${a}${b}${c}
done <1.txt