一、函数
1、将命令序列按格式卸载一起
2、可方便重复使用命令序列
格式:
function 函数名(){ #或 函数(){
命令序列
return/exit 返回状态码 #显示的结束函数
}
函数调用:可以在脚本的任何位置定义,但必须在函数后调用(先定义在调用)
实例:
1、函数调用函数
#!/bin/bash
holle(){
echo holle
}
world(){
echo world
}
hi(){
echo `holle` `world`
#或echo $(holle) $(world)
}
hi
2、历遍目录
#!/bin/bash
#递归目录
mulu(){
for file in `ls $1`
do
if [ -d "$1/$file" ];then
echo -e "\e[34m"$1$file"\e[0m"
mulu "$1/$file" "$2"
else
echo " $2$file"
fi
done
}
mulu "/var/log" " "
3、阶乘
#!/bin/bash
jiecheng(){
read -p "请输入几的阶乘: " nu
cheng=1
for i in `seq $nu`
do
let cheng=$i*$cheng
done
echo $cheng
}
jiecheng
二、数组
数组定义办法
第一种:
[root@localhost ~]# a=(1 2 3 4)
[root@localhost ~]# echo ${a[*]}
1 2 3 4
第二种:
[root@localhost ~]# b=([0]=1 [1]=2 [2]=3 [3]=4)
[root@localhost ~]# echo ${b[*]}
1 2 3 4
第三种:
[root@localhost ~]# c="1 2 3 4"
[root@localhost ~]# d=($c)
[root@localhost ~]# echo ${d[*]}
1 2 3 4
第四种:
[root@localhost ~]# e[0]=1
[root@localhost ~]# e[1]=2
[root@localhost ~]# e[2]=3
[root@localhost ~]# e[3]=4
[root@localhost ~]# echo ${e[*]}
1 2 3 4
调用所有元素
[root@localhost ~]# echo ${e[*]}
1 2 3 4
[root@localhost ~]# echo ${e[@]}
1 2 3 4
数组操作
[root@localhost ~]# shuzi=(6 9 3 0 1 5)
[root@localhost ~]# echo ${shuzi[*]}
6 9 3 0 1 5
[root@localhost ~]# echo ${!shuzi[*]}#查看下标或索引
0 1 2 3 4 5
[root@localhost ~]# echo ${#shuzi[*]}#查看数组有几个元素
6
[root@localhost ~]# shuzi[3]=11#修改元素
[root@localhost ~]# echo ${shuzi[*]}
6 9 3 11 1 5
[root@localhost ~]# unset shuzi[3]#取消元素
[root@localhost ~]# echo ${shuzi[*]}
6 9 3 1 5
[root@localhost ~]# echo ${shuzi[*]:1:3}#切取元素片段,从1开始到3
9 3 1
实例:
1、冒泡排序
#!/bin/bash
#冒泡排序
echo "输入你想排序的数字"
read -a shuzu
for ((i=0;i<${#shuzu[*]};i++))
do
for ((j=0;j<${#shuzu[*]}-1;j++))
do
if [[ ${shuzu[j]} -gt ${shuzu[j+1]} ]];then
aaa=${shuzu[j]}
shuzu[j]=${shuzu[j+1]}
shuzu[j+1]=$aaa
fi
done
done
echo ${shuzu[*]}
2、将不足60的数字改为60
#!/bin/bash
echo "输入你想输入的数字"
read -a shuzu
for ((i=0;i<${#shuzu[*]};i++))
do
if [ ${shuzu[i]} -lt 60 ];then
shuzu[i]=60
fi
done
echo ${shuzu[*]}
3、删除数组中不足60分的元素
#!/bin/bash
#删除数组中不足60分的元素
echo "输入你想输入的数字"
read -a shuzu
a=${#shuzu[*]}
for ((i=0;i<$a;i++))
do
if [ ${shuzu[$i]} -lt 60 ];then
unset shuzu[$i]
fi
done
echo ${shuzu[*]}