Shell脚本(函数,shell中的数组)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本(函数,shell中的数组)相关的知识,希望对你有一定的参考价值。

函数

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

格式:function f_name(){

          command

          }

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


案例一:

[[email protected] 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


[[email protected] 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表示脚本名字。$#表示多少个函数。


案例二:

[[email protected] shell]# vim fun1.sh


#/bin/bash

sum() {

      s=$[$1+$2]

      echo $s

}

sum 22 2


[[email protected] 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"



运行结果:

[[email protected] shell]# sh fun2.sh 

please input the eth name: ens33

ens33 address is 192.168.52.50




Shell中的数组


定义数组:

[[email protected] ~]# a=(1 2 3 4 5 6)

查看数组全部值:

[[email protected] ~]# echo ${a[@]}

1 2 3 4 5 6

[[email protected] ~]# echo ${a[*]}

1 2 3 4 5 6

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

[[email protected] ~]# echo ${a[0]}

1

[[email protected] ~]# echo ${a[1]}

2

[[email protected] ~]# echo ${a[2]}

3


给数组赋值或更改:

[[email protected] ~]# a[2]=aaa

[[email protected] ~]# echo ${a[*]}

1 2 aaa 4 5 6


数组的删除:

删除数组里的一个值:

[[email protected] ~]# unset a[1]

[[email protected] ~]# echo ${a[*]}

1 aaa 4 5 6

[[email protected] ~]# unset a[0]

[[email protected] ~]# echo ${a[*]}

aaa 4 5 6


删除整个数组

[[email protected] ~]# unset a

[[email protected] ~]# echo ${a[*]}



删除笔记修改笔记

数组分片:

[[email protected] ~]# echo ${b[@]}

1 2 3 4 5 6


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


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

[[email protected] ~]# echo ${b[@]:0:2}

1 2


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

[[email protected] ~]# echo ${b[@]:1:3}

2 3 4


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

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


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

[[email protected] ~]# echo ${b[@]:0-2:2}

5 6


数组替换

临时替换:

[[email protected] ~]# echo ${b[@]/5/6}

1 2 3 4 6 6

[[email protected] ~]# echo ${b[@]}

1 2 3 4 5 6


永久替换:

[[email protected] ~]# b=(${b[@]/5/6})

[[email protected] ~]# echo ${b[@]}

1 2 3 4 6 6


以上是关于Shell脚本(函数,shell中的数组)的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本中的函数,shell中的数组,shell项目-告警系统

Shell脚本(函数,shell中的数组)

Linux13 shell函数数组及awkawk中的数组

shell中的函数数组告警系统脚本

shell中的函数shell中的数组告警系统需求分析

shell脚本中无法使用cd的问题解决方法