前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell中的函数和数组

shell中的函数和数组

作者头像
端碗吹水
发布2020-09-23 12:16:30
2.4K0
发布2020-09-23 12:16:30
举报
文章被收录于专栏:程序猿的大杂烩

20.16/20.17 shell中的函数

在shell中函数的关键字function是可以省略的,而且和其他大部分的编程语言一样,函数要声明在调用函数的语句之前,因为代码都是从上至下执行的。以下写一个简单的函数打印脚本的参数,代码示例:0 表示脚本的名称,# 表示此函数参数的个数,要注意的是在函数里的1、2、3获得的是函数的参数,而不是脚本的参数,在函数体外使用1、2、3获得的才是脚本的参数。

运行结果:

shell中的函数和数组
shell中的函数和数组

在函数体外使用$n...获得的才是脚本的参数:

shell中的函数和数组
shell中的函数和数组

运行结果:

shell中的函数和数组
shell中的函数和数组

shell中的函数和数组
shell中的函数和数组

这个示例是定义一个用于进行加法运算的函数:

shell中的函数和数组
shell中的函数和数组

运行结果:

shell中的函数和数组
shell中的函数和数组

函数的基本知识介绍完了,下面来做一个小例题,使用函数来实现这个需求: 需求:用户输入一个网卡名称,此脚本就能够把网卡的IP地址打印出来。 代码示例:

代码语言:javascript
复制
#!/bin/bash
ip(){
   #得到网卡的IP
   ipAddress=`ifconfig |grep -A1 "$1: " |awk '/inet/ {print $2}'`

   #过滤没有IP的网卡
   if [ -n "$ipAddress" ]
   then
      echo "This eth IP is: $ipAddress"
   else
      echo "This eth not IP!"
      exit 1
   fi
}

read -p "Please input the eth name: " eth

#过滤用户的输入:输入内容不能为空,网卡不能不存在
if [ -n "$eth" ]
then
   addr=`ifconfig |grep $eth`
   if [ -n "$addr" ]
   then
      ip $eth
   else
      echo "Not this eth!"
            exit 1
   fi
else
   echo "You need input eth name!"
   exit 1
fi

运行结果:

shell中的函数和数组
shell中的函数和数组

20.18 shell中的数组

shell中的函数和数组
shell中的函数和数组

Shell中的数组合其他编程语言的数组概念是一样的,都是一堆数据的集合,下标也是从0开始,在日常编写的shell脚本中数组使用的次数不像其他编程语言那么多。 数组的声明格式: name=(1 2 3 4) 使用空格隔开数组中的元素

打印数组中的所有元素的常用方式有两种:

shell中的函数和数组
shell中的函数和数组

打印数组中的某个元素,方括号里的是下标:

shell中的函数和数组
shell中的函数和数组

打印数组的长度:

shell中的函数和数组
shell中的函数和数组

给数组增加元素:

shell中的函数和数组
shell中的函数和数组

重新赋值数组中的某个元素:

shell中的函数和数组
shell中的函数和数组

删除数组中的某个元素,和删除整个数组:

shell中的函数和数组
shell中的函数和数组

shell中的函数和数组
shell中的函数和数组

我们可以使用seq命令给数组赋值一个范围的数值,例如我赋值1到10这个范围的数字:

shell中的函数和数组
shell中的函数和数组

截取数组示例:

shell中的函数和数组
shell中的函数和数组

从第一个元素开始,截取3个元素,截取后原本的数组元素不会有变动。 还可以倒着截取数组中的元素,例如我要从倒数第3个元素开始,截取2个元素:

shell中的函数和数组
shell中的函数和数组

数组替换,和sed命令有点类似,例如我要把数组中的3替换成100:

shell中的函数和数组
shell中的函数和数组

同样的原本的数组不会发生变动。 可以把替换后的数组元素赋值给一个数组变量:

shell中的函数和数组
shell中的函数和数组
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 20.16/20.17 shell中的函数
  • 20.18 shell中的数组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档