- 求1-100的加法,并输出1+2+3+4+5+6+7+…+100?
#!/bin/bash
sum=1
str='1'
i=2
for (( i; i<=100; i++))
do
str=$str'+'$i
let sum+=i
done
echo $str=$sum
因为‘+’不好处理,所以从2开始。
2.输入n个数字,判断最大最小值
#!/bin/bash
function myfun()
{
max=$1
min=$1
i=0
for i in $@
do
if [ $max -lt $i ]
then
let max=$i
fi
if [ $min -gt $i ]
then
let min=$i
fi
done
}
myfun $@
echo "max=$max, min=$min"
$@:命令行参数列表
$#:命令行参数个数
shell脚本的函数调用只需要函数名,函数名后面的参数可以被函数当做命令行参数,使用$@,$#,$1,$2…$9读取。
3.shell脚本编写进度条。
#!/bin/bash
i=0
flag=('|' '/' '-' '\')
arr=''
for ((i; i<=100; i++))
do
printf "[%-100s] [%d%%] %s\r" "$arr" "$i" "${flag[i%4]}"
arr=$arr'#'
usleep 100000
done
printf "\n"
进度条分为三部分,‘#’部分,百分比显示,旋转的字符。
‘#’部分,需要提前预留好足够的位置,通过sleep控制时间让#逐渐显示,同时百分比也要改变。
4.计算平均值,并控制结果的精度。
#!/bin/bash
function avg()
{
i=1
max=$1
min=$1
sum=0
for i in $@
do
let sum+=$i
if [ $max -lt $i ]
then
max=$i
fi
if [ $min -gt $i ]
then
min=$i
fi
done
echo "max=$max"
echo "min=$min"
echo "ibase=10;scale=2;$sum/$#" | bc
}
avg $@
命令:ibase=10,表示采用十进制
scale=2,表示精度为2
bc,Linux下的计算器
5.读取文件内容并对字符串进行分割与拼接。
#!/bin/bash
while read line
do
part1=$(echo $line | cut -c 1-3)
part2=$(echo $line | cut -b 4-6 | tr '[a-z]' '[A-Z]')
part3=$(echo $line | cut -c 7-9)
echo $part3$part2$part1
done < file
cut -c:按字符分割
cut -b:按字节分割
tr:将小写的[a-z]转化成大写的[A-Z]
拼接:$part3$part2$part1