• Shell脚本基本语法


    Mac电脑下Bash,是Unix shell的一种,开发者通过shell脚本中间件调用系统内核,所以苹果开发者很有必要学习一下。

    1创建和输出

    1-1创建Shell文件

    命令:touch hello.sh

    1-2定义文件声明

    #!/bin/bash
    #!:表示约定标记,他会告诉系统这个脚本需要什么样子的解释器来执行,既是一种脚本体现。'#'注释,注意:在Shell脚本中,没有多行注视,只有单行注释 。
    echo “Hello world!”

    1-3执行Shell脚本hello文件

    命令:./hello.sh

    查看和修改文件权限

    查看命令:ls -l hello.sh
    修改命令: chmod +x ./hello.sh
    -rwxr-xr-x
    请添加图片描述

    1-4 变量操作

    • 赋值不要有空格
      name="Kenny"不能写成name = "Kenny"
      变量名首字母必须是‘a-z’或‘A-Z’见的字母, 只读变量不能被修改,审美readonly name
    • 删除变量unset name
    • 特殊变量
      ${0}:文件名称
      ${?}:表示返回上一个命令执行状态返回值
      $#:参数个数
      $*:参数列表,组合字符串
      $@:参数列表
      $$:后去当前shell进行ID
      $!:执行上一个指令PID

    1-5 字符串拼接、截取 、删除

    • 拼接
    #!/bin/bash
    name='Andy'
    age=100
    sex="男"
    info=" 姓名:'${name}'   年龄:'${age}'  性别:'${sex}'  " 
    echo ${info}                                
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 截取
      变量名:起始:结束,结果’have’
    name="I have a Dream"
    result=${name:2:4}
    echo ${result}
    
    • 1
    • 2
    • 3

    求变量长度length=${#name}-1
    结束位置可以不写,表示到结束

    name="I have a Dream"
    result=${name:5:length-1}
    echo ${result}
    
    • 1
    • 2
    • 3
    • 删除
      #语法一:${变量名#删除字符串 正则表达式}从第一个开始删除
      ##语法二:${变量名##删除字符串 正则表达式}从最后一个开始删除
      %语法三:${变量名%删除字符串 正则表达式}查找指定字符第一个,并且删除前面所有字符(包含自己)
      %%语法三:${变量名%%删除字符串 正则表达式}查找指定字符最后一个,并且删除前面所有的字符(包含自己)

    删除范围:从左边删除到右边
    #->表示查询方向从左到右
    %->表示查询方向从右到左

    删除范围:从右边删除到左边
    ##->表示查询方向从右到左
    %%->表示查询方向从左到右

    案例一:查找指定字符第一个,并且删除后面所有的字符(包含自己)

    #从左边开始找第一个,并且删除前面所有字符(包含自己)

    name="I have a Dream"
    result=${name#*a}
    echo ${result}
    
    • 1
    • 2
    • 3

    结果

    ve a Dream

    ##从右边开始找第一个,并且删除前面所有字符(包含自己)

    name="I have a Dream"
    result=${name##*a}
    echo ${result}
    
    • 1
    • 2
    • 3

    结果

    m

    案例二:查找指定字符第一个,并且删除后面所有字符(包含自己)

    %从右边开始找第一个,并且删除后面所有字符(包含自己)

    name="I have a Dream"
    result=${name%a*}
    echo ${result}
    
    • 1
    • 2
    • 3

    结果

    I have a Dre

    %%从左边开始找第一个,并且删除后面所有字符(包含自己)

    name="I have a Dream"
    result=${name%%a*}
    echo ${result}
    
    • 1
    • 2
    • 3

    结果

    I h

  • 相关阅读:
    解线性方程组python实现直接分解法(Doolittle,克劳特,追赶法)
    SassError: Expected newline. sass
    Redis 统计用户新增和留存
    FPGA工程师面试试题集锦11~20
    别在傻傻的封装对象返回了,来看看这篇SpringBoot返回结果统一包装
    虚拟机部署linux网络连接配置
    python实现批量pdf转txt和word
    CSAPP 之 BombLab 详解
    同源策略——CORS和JSONP劫持漏洞
    YOLOv5项目实战(3)— 如何批量命名数据集中的图片
  • 原文地址:https://blog.csdn.net/zhuxincheng_1218/article/details/125595793