tset123 发表于 2018-8-20 07:57:13

shell中的函数和数组

  笔记内容:


[*]20.16/20.17 shell中的函数
[*]20.18 shell中的数组  笔记日期:2017-11-24

  

20.16/20.17 shell中的函数

  在shell中函数的关键字function是可以省略的,而且和其他大部分的编程语言一样,函数要声明在调用函数的语句之前,因为代码都是从上至下执行的。以下写一个简单的函数打印脚本的参数,代码示例:

  $0 表示脚本的名称,$# 表示此函数参数的个数,要注意的是在函数里的$1、$2、$3获得的是函数的参数,而不是脚本的参数,在函数体外使用$1、$2、$3获得的才是脚本的参数。
  
  运行结果:

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

  
  运行结果:

  

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

  
  运行结果:

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

#!/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
  

  
  运行结果:

  

20.18 shell中的数组

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

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

  
  打印数组的长度:

  
  给数组增加元素:

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

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

  

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

  
  截取数组示例:

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

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

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



页: [1]
查看完整版本: shell中的函数和数组