函数
Shell函数在实际工作中经常使用,因为有一些命令是需要反复调用的,如果每次都重复写一遍,代码量冗余,可以将这一些命令定义成一个函数,调用这个函数就可以重复使用这些命令。
函数的定义的基本格式
function 函数名(){
命令序列
return x
}
- 定义函数时,function 可以省略,直接写函数名(){}
- return 用来返回给系统一个值,可以用来调试脚本,比如执行到脚本的某一行时,返回一个值来标识脚本走到这一步了。
函数的简单应用
[root@localhost ~]# vim funsum.sh
#!/bin/bash
#求总和和偶数和的脚本
read -p "请选择求总和还是偶数和,总和输入1偶数和输入2:" chose
totalsum(){
read -p "请输入范围(1-?):" num
sum=0
for ((i=1;i<=$num;i++))
do
let sum+=$i
done
echo $sum
}
oushusum(){ //定义函数
read -p "请输入范围(1-?):" num
sum=0
for ((i=1;i<=$num;i++))
do
if [[ i%2 -eq 0 ]];then
let sum+=$i
fi
done
echo $sum
}
case $chose in
1)
totalsum //调用函数
;;
2)
oushusum //调用函数
;;
*)
echo "参数错误"
;;
esac
数组
数组的格式:数组名(元素1 元素2 元素3 …元素n)
数组的取值格式:${数组名[索引]} 例如:${a[0]} 表示取数组a当中的第一个值
数组的索引:${!a[*]} 索引从0开始
数组的长度:${#a[*]}
数组的经典案例冒泡排序
#!/bin/bash
#冒泡排序的脚本
#作者:lvbin
a=(30 10 3 40 11 60 7)
maopao(){
for ((i=1;i<$((${#a[*]}));i++))
do
for ((j=0;j<$((${#a[*]}-$i));j++))
do
num1=${a[$j]}
num2=${a[$j+1]}
if [[ $num1 -gt $num2 ]];then
oo=$num1
a[$j]=$num2
a[$j+1]=$oo
fi
done
done
echo ${a[*]}
}
maopao