函数就是把一段代码整理到一个小单元中,并给这个小单元命名,当用到这段代码时直接调用这个小单元的名字即可。
function f_name() {
commond
}
说明: 单词“function”可以省略,直接写函数的名字;函数必须放在脚本的最前面;调用函数的方法:直接写函数名。
eg1:
[root@localhost sbin]# vim func.sh
#!/bin/bash
function inp(){
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The third parameter is $3"
echo "The number of parameter is $#"
echo "The script's name is $0"
}
#定义一个函数
inp a b c asd sdg
#引用该函数
[root@localhost sbin]# sh func.sh
The first parameter is a
The second parameter is b
The third parameter is c
The number of parameter is 5
The script's name is func.sh
说明: “$#” 表示参数的个数;“$0”表示参数名。
eg2:
#!/bin/bash
function inp(){
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The third parameter is $3"
echo "The number of parameter is $#"
echo "The script's name is $0"
}
inp $1 $2 $3
[root@localhost sbin]# sh func.sh 1 2
The first parameter is 1
The second parameter is 2
The third parameter is
The number of parameter is 2
The script's name is func.sh
说明: 此时inp后面的“$1,$2,$3”为函数inp的变量,在执行该脚本时直接输入。
eg3:
#!/bin/bash
sum() {
s=$[$1+$2]
echo "$s"
}
sum 1 10
[root@localhost sbin]# sh func2.sh
11
eg3:
#!/bin/bash
ip(){
ifconfig |grep -A1 "$1: " |tail -1 |awk '{print $2}'
}
read -p "Please input the eth name:" e
myip=`ip $e`
echo "$e address is $myip"
[root@localhost sbin]# sh func3.sh
Please input the eth name:ens37
ens37 address is 192.168.75.129
[root@localhost sbin]# sh func3.sh
Please input the eth name:ens33
ens33 address is 192.168.8.130
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。
seq 1 5
)[root@localhost sbin]# a=(`seq 1 10`)
[root@localhost sbin]# echo ${a[*]}
1 2 3 4 5 6 7 8 9 10
[root@localhost sbin]# echo ${a[@]:0:3}
1 2 3
[root@localhost sbin]# echo ${a[@]:3:4}
4 5 6 7
注意: 数组中元素的序号是从0开始排序的。
[root@localhost sbin]# echo ${a[@]:0-3:2}
8 9
[root@localhost sbin]# echo ${a[@]/3/three}
1 2 three 4 5 6 7 8 9 10
[root@localhost sbin]# echo ${a[*]}
1 2 3 4 5 6 7 8 9 10
注: 该方法不会改变元素中的值,知识改变打印时的值。
[root@localhost sbin]# a=(${a[@]/3/three})
[root@localhost sbin]# echo ${a[*]}
1 2 three 4 5 6 7 8 9 10
注: 该方法会直接更改数组中对应元素的值。
要求: 机器的角色多种多样,但是所有的机器上要部署同样的监控系统,也就是说所有的机器不管什么角色,整个程序框架是一样的,不同的地方在于根据不同的角色定制不同的配置文件。
(adsbygoogle = window.adsbygoogle || []).push({});