函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。
#! /bin/bash
function inp(){ //定义一个inp的函数
echo $1 $2 $3 $0 $#
}
inp 1 a 2 b //传入参数
sh test.sh 2 b 3 c
$1 : 第一个参数 就是如上的“2”
$2 : 第二个参数 就是如上的“b”
$3 : 第三个参数 就是如上的“3”
$0 : 脚本的本身名称 如上的“test.sh”
$# : 其实就是统计有几个参数这边是“2 b 3 c” 那就是$# = 4
$@ : 代表所有的参数 2 b 3 c
#!/bin/bash
sum() { //定义的函数名为sum
s=$[$1+$2]
echo $s
}
sum 1 2
根据如上的介绍,这边的1 就是所谓的 $1参数;2 就是所谓的$2 参数
输入网卡的名字,检查网卡的IP地址:
#!/bin/bash
ip() {
ifconfig | grep -A1 "$e" |tail -1 | awk '{print $2}'
}
read -p "Please input the eth name: " e
myip=`ip $e`
echo "$e address is $myip"
如上脚本适用于centos 7执行步骤为:
sh -x function2.sh
+ read -p 'Please input the eth name: ' e
Please input the eth name: ens33
++ ip ens33
++ grep -A1 ens33
++ tail -1
++ awk '{print $2}'
++ ifconfig
+ myip=192.168.96.129
+ echo 'ens33 address is 192.168.96.129'
ens33 address is 192.168.96.129
数组在脚本中虽然不经常用,但是一旦去用了就会非常实用!
[[email protected]-01 sbin]# a=(1 2 3) //定义一个数组a并赋值 1 2 3
[[email protected]-01 sbin]# echo ${a[*]} //注意输出a的值的格式
1 2 3
[[email protected]-01 sbin]# echo ${a[1]} //输出单个a数组中的值
2
[[email protected]-01 sbin]# echo ${a[2]}
3
[[email protected]-01 sbin]# echo ${a[0]} //注意第一个其实是 0
1
[[email protected]-01 sbin]# echo ${#a[@]} //获取数组的元素个数
3
[[email protected]-01 sbin]# a[3]=a //给第三个数组赋值一个a
[[email protected]-01 sbin]# echo ${a[*]}
1 2 3 a
[[email protected]-01 sbin]# a[3]=aaa //修改赋值为aaa
[[email protected]-01 sbin]# echo ${a[*]}
1 2 3 aaa
[[email protected]-01 sbin]# unset a[2] //删除a数组中第2位的值
[[email protected]-01 sbin]# echo ${a[*]}
1 2 aaa
[[email protected]-01 sbin]# unset a //删除a数组
[[email protected]-01 sbin]# echo ${a[*]}
[[email protected] sbin]# a=(`seq 1 8`) //给a赋值8个数
[[email protected] sbin]# echo ${a[*]}
1 2 3 4 5 6 7 8
假如现在的需求是我只需要 4 5 6
[[email protected] sbin]# echo ${a[@]:3:3} //意思是,从第3个数组开始,截取3个。
4 5 6
另外一个需求 只需要 6 7
[[email protected] sbin]# echo ${a[@]:0-3:2} //从倒数第三个开始,取两个数
6 7
[[email protected]-01 sbin]# echo ${a[@]/5/asd}
1 2 3 4 asd 6 7 8