shell脚本中的函数,shell中的数组,正则三剑客(grep)

shell脚本中的函数

  • 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。
    格式: 
    function f_name() 
    { 
            command
    }
    
    函数必须要放在最前面
    示例1 
    #!/bin/bash
    input() {
        echo $1 $2 $# $0
    }
    
    input 1 a b
    
    示例2 
    #!/bin/bash
    sum() {
        s=$[$1+$2]
        echo $s
    }
    sum 1 2
    
    示例3 
    #!/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"

shell中的数组

  • 定义数组 a=(1 2 3 4 5); echo ${a[@]}
    echo ${#a[@]} 获取数组的元素个数 
    echo ${a[2]} 读取第三个元素,数组从0开始
    echo ${a[*]} 等同于 ${a[@]}  显示整个数组
    数组赋值
    a[1]=100; echo ${a[@]}
    a[5]=2; echo ${a[@]} 如果下标不存在则会自动添加一个元素
    数组的删除
    unset a; unset a[1]
    数组分片
    a=(`seq 1 5`)
    echo ${a[@]:0:3} 从第一个元素开始,截取3个
    echo ${a[@]:1:4} 从第二个元素开始,截取4个
    echo ${a[@]:0-3:2} 从倒数第3个元素开始,截取2个
    数组替换
    echo ${a[@]/3/100}
    a=(${a[@]/3/100})

正则三剑客(grep)

  • 什么是正则
    正则就是一串有规律的字符串
    掌握好正则对于编写shell脚本有很大帮助
    各种编程语言中都有正则,原理是一样的
    本章将要学习grep/egrep、sed、awk
  • grep [-cinvABC] 'word' filename  (gerp的功能就是查找的功能了)
     -c 打印行数
     -i 不区分大小写
     -n 显示行号
     -v 打印不符合要求的行数,取反的意思
     -r 遍历所有子目录
     -A 后面跟数字,表示打印符合要求的行以及下面的n行,例如-A2就是下面的两行
     -B 同上,过滤出符合要求的行以及上面n行
     -C 同上,同时过滤出符合要求的行以及上下各n行
     grep -n 'root' /etc/passwd
     grep -nv 'nologin' /etc/passwd
     grep '[0-9]'/etc/inittab
     grep -v '[0-9]'/etc/inittab
     grep -v '^#' /etc/inittab   除了以#开头的,都打印出来
     grep -v '^#' /etc/inittab|grep -v  '^$'   (除了除了以#开头的跟空行,都打印出来)(^表示开头,$表示结尾,^$表示空行)
     grep '^[^a-zA-Z]' test.txt  打印以字符开头的,不论大小写
     grep 'r.o' test.txt
     grep 'oo*' test.txt
     grep '.*' test.txt    (.表示任意字符,*表示0个或者多个)
     grep 'o\{2\}' /etc/passwd
     egrep 'o{2}' /etc/passwd   打印含有2个o的行数 (egrep是扩展正则,|  ? ()  {}  都是扩展正则,不能直接在grep上用,如果非要用grep的话需要用\脱义)
     egrep 'o+' /etc/passwd   (+表示1个或者多个)
     egrep 'oo?' /etc/passwd   (?表示0个或1个)
     egrep 'root|nologin' /etc/passwd
     egrep '(oo){2}' /etc/passwd

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值