Shell介绍(二)函数,数组
[root@web scripts]# cat fun.sh
#!/bin/sh
test1(){
echo "第一种函数定义方式"
}
function test2(){
echo "第二种函数定义方式"
}
function test3 {
echo "第三种函数定义方式"
}
test1
test2
test3函数的传参 不能直接传参
1. 在函数名的后面跟参数
fun(){
if [ -f $1 ];then
echo "$1 is exsis"
else
echo "$1 is no ex"
fi
}
fun $12. 全局配置 在函数的最上面 设置变量
[root@web scripts]# cat fun1.sh
#!/bin/sh
num=20
fun(){
for i in `seq $1`
do
sum=$[num+i]
done
echo $sum
}
fun $13. local 只在函数体内部生效
[root@web scripts]# cat fun1.sh
#!/bin/sh
fun(){
num=20
for i in `seq $1`
do
sum=$[num+i]
done
echo $sum
}
fun $1定义普通数组
第一种定义方式
[root@web scripts]# array[0]=shell [root@web scripts]# array[1]=Linux [root@web scripts]# array[2]=MySQL
[root@web02 ~]# array=(shell mysql [20]=kvm [50]=test)
[root@web02 ~]# echo ${array[*]}
shell mysql kvm test
[root@web02 ~]# echo ${!array[*]}
0 1 20 50如何查看值 查看某个索引的值
[root@web scripts]# echo ${array[2]}
MySQL
[root@web scripts]# echo ${array[1]}
Linux
[root@web scripts]# echo ${array[0]}
shell查看所有的值
[root@web scripts]# echo ${array[*]}
shell Linux MySQL
[root@web scripts]# echo ${array[@]}
shell Linux MySQL如何查看索引
[root@web scripts]# echo ${!array[*]}
0 1 2
[root@web scripts]# echo ${!arraytest[*]}
0 1 2 3 4
[root@web scripts]# echo ${arraytest[*]}
shell Linux Mysql kvm docker案例: ping数组内的ip
[root@web scripts]# cat array.sh
#!/bin/sh
ip=(
10.0.0.7
10.0.0.8
10.0.0.254
10.0.0.1
)
for i in ${!ip[*]}
do
ping -c 1 -W 1 ${ip[$i]}
done普通数组
[root@web02 ~]# array[index1]=Shell
[root@web02 ~]# array[index2]=Linux
[root@web02 ~]# array[index3]=MySQL
[root@web02 ~]# echo ${array[*]}
MySQL
[root@web02 ~]# echo ${array[1]}
[root@web02 ~]# echo ${array[2]}
[root@web02 ~]# echo ${array[3]}
[root@web02 ~]# echo ${array[0]}
MySQL如何定义关联数组
declare -A array
[root@web02 ~]# declare -A array
[root@web02 ~]# array[index1]=Shell
[root@web02 ~]# array[index2]=Linux
[root@web02 ~]# array[index3]=MySQL
[root@web02 ~]# echo ${array[index1]}
Shell
[root@web02 ~]# echo ${array[index2]}
Linux
[root@web02 ~]# echo ${array[index3]}
MySQL
[root@web02 ~]# echo ${array[*]}
Shell Linux MySQL
[root@web02 ~]# echo ${!array[*]}
index1 index2 index3查看数组的长度
遍历数组 三种方式
[root@web02 ~]# let array[a]++
[root@web02 ~]# let array[a]++
[root@web02 ~]# let array[a]++
[root@web02 ~]# let array[a]++
[root@web02 ~]# let a++
[root@web02 ~]# let a++
[root@web02 ~]# echo $a
2
[root@web02 ~]# let b++
[root@web02 ~]# let b++
[root@web02 ~]# echo $b
2
[root@web02 ~]# let array[b]++
[root@web02 ~]# let array[b]++
[root@web02 ~]# let array[b]++
[root@web02 ~]# echo ${array[b]}[root@web02 ~]# cat array.sh
#!/bin/sh
declare -A array
for i in `cat sex.txt`
do
let array[$i]++
done
for i in ${!array[*]}
do
echo "$i出现了 ${array[$i]}次"
done[root@web02 ~]# cat sex.txt
zs m
ls m
em f
alex m
ld m
oldboy f
bgx x
[root@web02 ~]# cat array.sh
#!/bin/sh
declare -A array
while read line
do
type=`echo $line|awk '{print $2}'`
let array[$type]++
done<sex.txt
for i in ${!array[*]}
do
echo "$i出现了 ${array[$i]}次"
done案例3
[root@web02 ~]# cat array.sh
#!/bin/sh
declare -A array
while read line
do
let array[`echo $line|awk '{print $2}'`]++
done<sex.txt
for i in ${!array[*]}
do
echo "$i出现了 ${array[$i]}次"
done
统计IP地址
[root@web02 ~]# cat array.sh
#!/bin/sh
declare -A array
while read line
do
type=`echo $line|awk '{print $1}'`
let array[$type]++
done</var/log/nginx/access.log
for i in ${!array[*]}
do
echo "$i出现了 ${array[$i]}次"
done





豫公网安备41042502000209号