函数

函数就是把一段代码整理到一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。

格式:function f_name(){

          command

          }

函数必须放在最前面,函数名可以自己定义。


案例一:

[root@congji shell]# vim fun.sh 

#!/bin/bash

function inp() {

    echo $1 $2 $3 $10 ${10} ${11} $0 $# [$*]

}

inp 1 2 3 4 5 6 7 8 9 34 55


[root@congji shell]# sh fun.sh 

1 2 3 10 34 55 fun.sh 11 [1 2 3 4 5 6 7 8 9 34 55]


注意$10并不能打印出第10个函数,当n>=10时,用{10}来获取函数。$0表示脚本名字。$#表示多少个函数。


案例二:

[root@congji shell]# vim fun1.sh


#/bin/bash

sum() {

      s=$[$1+$2]

      echo $s

}

sum 22 2


[root@congji shell]# sh fun1.sh

24




案例三:

写一个脚本,输入网卡号则显示该往卡上的ip。

#/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@congji shell]# sh fun2.sh 

please input the eth name: ens33

ens33 address is 192.168.52.50




Shell中的数组


定义数组:

[root@congji ~]# a=(1 2 3 4 5 6)

查看数组全部值:

[root@congji ~]# echo ${a[@]}

1 2 3 4 5 6

[root@congji ~]# echo ${a[*]}

1 2 3 4 5 6

查看数组单一的值:(从零开始)

[root@congji ~]# echo ${a[0]}

1

[root@congji ~]# echo ${a[1]}

2

[root@congji ~]# echo ${a[2]}

3


给数组赋值或更改:

[root@congji ~]# a[2]=aaa

[root@congji ~]# echo ${a[*]}

1 2 aaa 4 5 6


数组的删除:

删除数组里的一个值:

[root@congji ~]# unset a[1]

[root@congji ~]# echo ${a[*]}

1 aaa 4 5 6

[root@congji ~]# unset a[0]

[root@congji ~]# echo ${a[*]}

aaa 4 5 6


删除整个数组

[root@congji ~]# unset a

[root@congji ~]# echo ${a[*]}



删除笔记修改笔记

数组分片:

[root@congji ~]# echo ${b[@]}

1 2 3 4 5 6


格式:echo ${数组名称[@]:从第几个元素开始:截取几个}


从第一个元素开始,截取2个:

[root@congji ~]# echo ${b[@]:0:2}

1 2


从第二个元素开始,截取3个:

[root@congji ~]# echo ${b[@]:1:3}

2 3 4


那么倒着应该怎么截取呢:

格式:echo ${数组名称[@]:0-倒数第几个元素:截取几个}


从倒数第2个元素开始,截取2个

[root@congji ~]# echo ${b[@]:0-2:2}

5 6


数组替换

临时替换:

[root@congji ~]# echo ${b[@]/5/6}

1 2 3 4 6 6

[root@congji ~]# echo ${b[@]}

1 2 3 4 5 6


永久替换:

[root@congji ~]# b=(${b[@]/5/6})

[root@congji ~]# echo ${b[@]}

1 2 3 4 6 6