Shell脚本语法练习
1. 计算1+2+3+4+…+100
#!/bin/bash
i=1
sum=0
while [ $i -le 100 ]
do
let sum+=i
let i++
done
echo $sum
2. 计算1+2+3+4+…+100,并将执行过程打出
#!/bin/bash
i=1
sum=0
echostr=''
while [ $i -le 100 ]
do
let sum+=i
if [ -z "$echostr" ]; then
echostr=$i
else
echostr=$echostr'+'$i
fi
let i++
done
echo $echostr=$sum
3. 遍历命令行参数
#!/bin/bash
while [ $# -ne 0 ]
do
echo $1
shift 1 #命令行参数左移1位
done
4. 遍历数组
#!/bin/bash
# 第一种方法,利用数组下标遍历,${#arr[@]}和${#arr[*]}都表示数组元素个数
arr=(10 b 3.14 'str')
for (( i=0; i<${#arr[@]}; i++ ))
do
echo "$i -> ${arr[i]}"
done
#!/bin/bash
# 第二种方法,${arr[@]}和${arr[*]}都表示数组的所有元素,推荐第二种方法
arr=(10 b 3.14 'str')
for i in ${arr[@]}
do
echo $i
done
5. 计算一组数据的最大值,最小值,平均值
#!/bin/bash
arr=(1 2 3 4 5 6 7 8 9)
let min=${arr[0]}
let max=${min}
sum=0
for (( i=0; i<${#arr[@]}; i++ ))
do
if [ ${min} -gt ${arr[$i]} ]; then
min=${arr[$i]}
elif [ ${max} -lt ${arr[$i]} ]; then
max=${arr[$i]}
fi
let sum+=${arr[$i]}
done
echo $min
echo $max
echo $sum
total=${#arr[@]}
echo "$sum/$total" | bc
6. 从屏幕上输入一个数字,计算斐波那契数列
#!/bin/bash
arr[1]=1
arr[2]=1
i=0
read max
while [ $i -le $max ]
do
let arr[$i+2]=arr[$i+1]+arr[$i]
let i++
done
echo ${arr[$max]}
7. 进度条
#!/bin/bash
i=0
bar=""
label=("|" "/" "-" "\\")
while [ $i -le 100 ]
do
printf "\033[35m[%-100s][%d%%][%c]\r\033[0m" "$bar" "$i" "${label[i%4]}"
let i++
bar=${bar}'#'
sleep 0.1
done
printf "\n"