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

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值