1. 计算出1+2+3+..+100的结果。可以使⽤用多种⽅方法解答。
str=""
sum=0
for i in {1..100}
do
if [ "X$str" = "X" ]; then
str=$i
else
str=$str"+"$i
fi
#let sum+=$i
((sum+=i))
done
str=$str"="${sum}
echo $str
补充:
类C循环
for (( i=0;i<10;i++ ))
do
echo "$i"
done
#############################
i=0
sum=0
while [ $i -lt 100 ]
do
((i=i+1))
((sum+=i))
done
echo $sum
2. 利⽤用shell编写进度条
i=0
str=""
arr=("|" "/" "-" "\\")
while [ $i -lt 100 ]
do
let index=$i%4
printf "\e[1;31m\e[1;46m[%-100s][%d%%][%c]\e[0m\r" "$str" "$i" "${arr[$index]}"
#printf "\033[37;31;5m[%-100s][%d%%][%c]\e[0m\033[39;49;0m\r" "$str" "$i" "${arr[$index]}"
let i++
str+="#"
sleep 0.1
done
3. 传⼊入⾄至少三个数字参数到脚本file,并计算出最⼤大,最⼩小,平均值。需要判断 传⼊入的数字是否⾜足够,否则输出警告信息。平均值保留两位⼩小数。
#!/bin/bash
function avg()
{
if [ $# -lt 1 ];then
printf "pra al least 2 items\n"
return
fi
min=$1
max=$2
i=0
for i in $@
do
[ $min -gt $i ]&& min=$i
[ $max -lt $i ]&& max=$i
let av+=$i
done
echo "min :$min"
echo "max : $max"
name=$(echo "ibase=10; scale=2; $av/$#" |bc)
echo "avg:$name"
}
avg $@