Shell语法训练

xiaoxiao2021-02-28  106

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

转载请注明原文地址: https://www.6miu.com/read-69670.html

最新回复(0)