Shell语法训练

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 $@

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...