• Linux中的shell编程


    shell编程

    重定向

    cat >temp

    输入内容到temp文件中,如果存在temp则覆盖,没有则新建

    cat >>temp

    追加内容

    cat temp1>>temp2

    将temp1中的内容追加到temp

    命令执行控制符号

    ; 一个命令行执行多条语句

    命令替换符

    1.双引号:用于带空格的字符串

    2.单引号 阻止shell解析字符串

    3.单撇反引号:将执行命令的结果放到变量里

    转义符

    variable=\$bva

    \阻止shell对”$“元字符的解释工作

    变量

    • 变量名=字符串

    • $变量名 或 ${变量名} 访问变量

    unset 变量名取消变量名

    final变量

    readonly 变量名

    变量的数值运算

    无法直接进行,可通过expr运算符

    expr $num1 运算符 $num2
    
    • 1

    如果运算符为*,&,|,<,>必须用\转义符使其失去特殊含义

    命令别名

    alias

    直接使用可查看命令别名

    自定义命令别名

    alias 别名=”原命令“

    unalias 别名 取消别名

    历史命令

    history [-c] [n]

    -c 清空(clear)

    -n n为数字,即显示几条命令

    ==!!==上一条命令,感觉用处不大

    第一个shell脚本

    #! /bin/bash
    # 注释
    echo ”hello world“
    date
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    执行

    1.授权

    chmod 775 脚本名

    chmod a+x 脚本名

    2.用 source 脚本名执行

    交互式shell脚本

    read -p "please input your name" name
    echo "hello " $name
    
    • 1
    • 2

    执行

    bash name
    
    • 1

    注释

    单行注释#
    多行注释:<

    分支结构

    在这里插入图片描述
    在这里插入图片描述

    逻辑判断

    只支持数字的关系运算符

    -eq等于
    - neqnot equal
    -gtA greater than B
    -ltA less than B
    -ge
    -le
    -a and (&&)
    -o or (||)
    !

    脚本调试

    bash [-x][-n] 脚本名
    
    • 1
    -x执行脚本本同时显示脚本语句
    -n检查语法错误不执行

    函数

    在这里插入图片描述

    字符串

    • 获取字符串长度
    ${#string};
    ${#string[0]}
    
    • 1
    • 2
    • 提取子字符串
    ${string:1:4}
    
    • 1

    数组

    • 定义数组

    值与值之间用空格隔开

    数组名=(值1 值2 ... 值n)
    
    • 1
    • 读取数组元素
    ${数组名[下标]} 读取单个
    ${数组名[@]} 读取全部
    
    • 1
    • 2
    • 读取数组长度
    ${#数组名[@]}
    
    • 1

    |

    函数

    [外链图片转存中…(img-AZme5QDw-1655274286263)]

    字符串

    • 获取字符串长度
    ${#string};
    ${#string[0]}
    
    • 1
    • 2
    • 提取子字符串
    ${string:1:4}
    
    • 1

    数组

    • 定义数组

    值与值之间用空格隔开

    数组名=(值1 值2 ... 值n)
    
    • 1
    • 读取数组元素
    ${数组名[下标]} 读取单个
    ${数组名[@]} 读取全部
    
    • 1
    • 2
    • 读取数组长度
    ${#数组名[@]}
    
    • 1
  • 相关阅读:
    Rust编程中的线程间通信
    【代码精读】optee_os的启动
    leetcode148-Sort List
    3分钟裁员1000+人!IBM中国研发部确认关闭,提供N+3赔偿
    el-table 对循环产生的空白列赋默认值
    在Windows11系统上搭建SFTP服务器
    【强化学习论文合集】AAMAS-2022 | 人工智能CCF-A类会议 (附链接)
    LeetCode 202 快乐数
    如何提高面试的成功率--校招
    23种设计模式之代理模式
  • 原文地址:https://blog.csdn.net/qq_51050526/article/details/133896265