• 【Shell篇<Ⅲ>】——shell函数、字符串的处理


    让我们进入今天的学习吧!
    💪Keep  trying💪

    在这里插入图片描述

    一、函数

    • 作用:将公共的语句块封装在一起,实现脚本的精简化,方便后期调用
    • 格式
    函数名(){
    	指令序列
    	......
    }
    
    • 1
    • 2
    • 3
    • 4

    调用方法:直接写函数名即可调用

    二、字符串的处理

    2.1 子串截取

    • 格式:${变量名:起始位置:长度}
      注意:其实位置从0开始;起始位置不写的话默认为0
      在这里插入图片描述

    2.2 子串替换

    • 格式
      • 替换出现的第一个:${变量/旧/新}
        在这里插入图片描述

      • 替换所有出现的:${变量//旧/新}
        在这里插入图片描述
        注意:这里的新可以不写,如果不写的话,就相当于空,等同与删除的效果

    2.3 子串的删除(删两头)

    • 掐头(从左往右删)
      • 直接掐:${变量#要删除的子串}
        在这里插入图片描述

      • 最短匹配删除:${变量#*关键词}
        也就是从左往右删,删到第一个和关键词匹配的地方
        在这里插入图片描述

      • 最长匹配删除:${变量##*关键词}
        也就是从左往右删,删到最后一个和关键词匹配的地方
        在这里插入图片描述

    • 去尾(从右往左删)
      • 直接去尾:${变量%关键词}
        在这里插入图片描述

      • 最短匹配去尾:${变量%关键词*}
        在这里插入图片描述

      • 最长匹配去尾:${变量%%关键词*}
        在这里插入图片描述

    2.4 给变量赋初值

    • 格式:${var:-str}
      注意:若变量var有值,则返回变量var的值,否则返回str的值
      在这里插入图片描述

    三、综合案例

    • 编写一个脚本,可以创建新用户,并随机配置8位密码(密码由字母大小写和数字随机组成)
    #!/bin/bash
    
    _pwd=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789    #存放密码的库
    pwd=""  #最终的八位密码
    # 先编写生成8位随机密码的函数
    password(){
        for i in {1..8}
        do
            n=$[RANDOM%62] #得到0-61中的随机数
            pwd_1=${_pwd:n:1}
            pwd=$pwd$pwd_1   #两个变量可以直接拼接在一起
        done
    }
    
    password #调用函数,生成八位密码
    useradd $1
    echo $pwd | passwd --stdin $1
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    脚本运行结果如下:
    在这里插入图片描述

    • 案例升级
      需要一次创建多个用户
    #!/bin/bash
    
    _pwd=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789    #存放密码的库
    pwd=""  #最终的八位密码
    # 先编写生成8位随机密码的函数
    password(){
        for i in {1..8}
        do
            n=$[RANDOM%62] #得到0-61中的随机数
            pwd_1=${_pwd:n:1}
            pwd=$pwd$pwd_1   #两个变量可以直接拼接在一起
        done
    }
    
    for i in $*   #遍历所有的位置参数
    do
        password #调用函数,生成八位密码
        useradd $1
        echo $pwd | passwd --stdin $1
        shift    #将位置参数左移一下
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    脚本运行结果如下:
    在这里插入图片描述


             👆回到顶部👆

    在这里插入图片描述

  • 相关阅读:
    Java @NotBlank反射校验
    C#更新word书签内容,但不删除书签
    配置binlog并使用Canal实现Mysql定制同步数据的功能
    Streamline PDF Signing with Signature
    4.go语言复合类型简述
    【语义分割】2017-PSPNet CVPR
    4 天 7 条 PR,80% 代码覆盖率,开源是「内卷」还是修炼?
    流量卡激活看快递:京东为快递激活,EMS/顺丰为自主激活。
    MONGO常用操作指令
    8. Go实现Gin服务优雅关机与重启
  • 原文地址:https://blog.csdn.net/qq_41890240/article/details/126451051