shell脚本中的函数 shell 中的数组

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen112826473/article/details/80019109

shell脚本中的函数

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

在shell脚本中,函数一定要在最前面,不然就出错。

格式:function f_name(){ 
command 

例子:

[root@shuai-01 ~]# vim function.sh

#!/bin/bash
#定义函数
function shu(){
        echo $1 $2 $3 $0 $#
}
#调用函数,并赋予参数
shu 1 a 3
[root@shuai-01 ~]# sh function.sh 
1 a 3 function.sh 3

$0 表示脚本的名字 ,$# 表示有几个参数
当参数大于等于十,用{10}来获取参数

例子:

[root@shuai-01 ~]# vim fun1.sh

#!bin/bash
sum(){
        s=$[$1+$2]
        echo $s
}
sum 22 2

[root@shuai-01 ~]# sh -x fun1.sh 
+ sum 22 2
+ s=24
+ echo 24
24

例子3:显示网卡IP

[root@shuai-01 ~]# vim fun2.sh

#!/bin/bash
ip(){
        ifconfig |grep -A1 "$1: " |tail -1 |awk '{print $2}'
}
 read -p "please input the eth name: " eth

ip $eth


[root@shuai-01 ~]# sh fun2.sh 
please input the eth name: ens33
192.168.176.135
[root@shuai-01 ~]# sh fun2.sh 
please input the eth name: ens37
192.168.248.128

shell中的数组

定义数组: 
数组是由小括号阔住。

[root@shuai-01 ~]# a=(1 2 3 4 5 6 )
[root@shuai-01 ~]# a=(`seq 1 6`)

查看数组的全部值

[root@shuai-01 ~]# echo ${a[@]}
1 2 3 4 5 6
[root@shuai-01 ~]# echo ${a[*]}
1 2 3 4 5 6

查看数组的某一个值

[root@shuai-01 ~]# echo ${a[0]}
1
[root@shuai-01 ~]# echo ${a[2]}
3
[root@shuai-01 ~]# echo ${a[5]}
6

给数组赋值:

[root@shuai-01 ~]# a[2]=aaa
[root@shuai-01 ~]# echo ${a[*]}
1 2 aaa 4 5 6

删除数组里的一个值

[root@shuai-01 ~]# unset a[1]
[root@shuai-01 ~]# echo ${a[*]}
1 aaa 4 5 6

删除整个数组:

[root@shuai-01 ~]# unset a
[root@shuai-01 ~]# echo ${a[*]}

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

[root@shuai-01 ~]# echo ${b[@]:0:2}
1 2

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

[root@shuai-01 ~]# echo ${b[@]:1:3}
2 3 4

那么倒着应该怎么截取呢: 
格式:echo ${数组名称[@]:0-倒数第几个元素:截取几个}

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

[root@shuai-01 ~]# echo ${b[@]:0-2:2}
5 6

数组替换 
临时替换:

[root@shuai-01 ~]# echo ${b[@]/5/6}
1 2 3 4 6 6
[root@shuai-01 ~]# echo ${b[@]}
1 2 3 4 5 6

永久替换: 
替换后重新赋值数组

[root@shuai-01 ~]# b=(${b[@]/5/6})
[root@shuai-01 ~]# echo ${b[@]}
1 2 3 4 6 6
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页