首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell中的函数+数组+数组分片

shell中的函数+数组+数组分片

作者头像
老七Linux
发布2018-05-09 16:51:34
3.1K0
发布2018-05-09 16:51:34
举报
一、函数:

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

直接来讲函数脚本吧:
#! /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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/09/15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、函数:
    • 直接来讲函数脚本吧:
      • 例如咱们有个脚本进行互动:
        • 再来一个比较容易理解的脚本:
          • 再来一个提高下:
          • 二、数组:
            • 定义数组
              • 元素的更改和赋值
                • 元素的删除
                  • 数组分片
                    • 数组替换
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档