码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Shell篇<Ⅲ>】——shell函数、字符串的处理


    文章目录

    • 一、函数
    • 二、字符串的处理
      • 2.1 子串截取
      • 2.2 子串替换
      • 2.3 子串的删除(删两头)
      • 2.4 给变量赋初值
    • 三、综合案例

    让我们进入今天的学习吧!
    💪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

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


             👆回到顶部👆

    在这里插入图片描述

  • 相关阅读:
    SpringBoot接口中如何直接返回图片数据
    从零开始的Django框架入门到实战教程(内含实战实例) - 10 初试Ajax之订单界面(学习笔记)
    图解LeetCode——779. 第K个语法符号(难度:中等)
    音乐项目后台管理系统出现的问题
    19.前端笔记-CSS-显示隐藏元素
    Android下怎么使用LDD查看依赖库
    hive的建表语句
    揭开Vue的响应式秘密:深入剖析Vue2与Vue3的差异与革新
    18.3 内存池概念、代码实现和详细分析
    皕杰报表使用字体和部署后添加字体
  • 原文地址:https://blog.csdn.net/qq_41890240/article/details/126451051
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号