zoukankan      html  css  js  c++  java
  • 看视频 shell入门视频补充的 shell脚本基本知识(TMD有点乱)

    命令的组合:

    1. 多个命令的顺序分隔:
         1. 顺序分隔,使用 ; 顺序执行;
         2. 逻辑与分隔, 使用 && ,  一旦前面的命令执行失败,后面的命令就不会执行;
         3. 逻辑或分隔, 使用 || ,  一旦前面的命令执行失败,后面的命令才会执行;
        一个很有用的组合逻辑分隔:命令1 && 命令2 || 命令3: 当命令1成功时会执行命令2, 当命令1失败时,会执行命令3;

     

    重定向:

    类型  设备文件 文件描述号 默认设备
    标准输入 /dev/stdin 0 键盘
    标准输出 /dev/stdout 1 显示器
    标准错误输出  /dev/stderr 2 显示器


    什么是重定向?重新指定命令执行时的I/O设备的方向, 不再使用默认的键盘和显示器, 改用指定的文本文件;

        类型        操作符        用途
        重定向输入    <        输入源来自指定的文件;
        重定向输出    >        输出到指定的文件(覆盖)
                >>        与> 类似,它是追加;
        重定向错误    2>        输出错误信息到指定的文件;
                2>>         与上面类似,它是追加;
        混合重定向    &>        所有的输出,相当于 >和2>

    变量值

        当使用双引号括起变量时,  1)在内部可以使用$扩展变量值 2)可以使用转义 3) 没有空格或Tab时,可以省略双引号;
        当使用单引号括起变量时,  把内部所以字符视为变量本身, 并不能有转义;

    读入变量值:
        read 取值的用法: read 变量名 或 read -p "提示信息“ 变量名 或 加上 -s 选项(输入的值不显示在屏幕上)

    变量的作用范围:
        1. 局部变量,在当前的shell中有效;
        2. 全局变量, 在当前shell和子shell中有效; 使用export 变量名[=变量名]发布全局变量, 使用 export -n 变量名取消全局变量;  

    变量:
        引用变量:使用$变量名 或 ${变量名}
        取消变量: unset 变量名   
    常见的预定义变量:
        $0: 当前所在进程或脚本名
        $$: 当前运行进程的PID号
        $?: 命令执行之后返回的状态值,0表示正常, 1或其它表示异常
        $#: 已加载的位置的变量的个数
        $*: 所有的位置的变量的值

     

    数值运算:

    常见运算:加法: num1 + num2

              减法: num1 - num2

              乘法: num1 * num2

              除法: num1 / num2

              取余: num1 % num2

    两种实现方法:

        1. 使用expr工具, 使用方法:  expr 1 + 2       注意:1)运算符之间需要有空格 2) 乘号需要转义,即/*  3)变量名不可以省略$

        2. 使用$[ ]表达式 使用方法:  $[1+2]           注意:1)可以不需要空格 2)乘号不需要转义 3)变量名可以省略$  4)用**表示乘方运算;

    使用let 命令操作变量:

        实现自增/自减/自乘/自除   例如:x=2; let x+=2

    随机整数变量:

        RANDOM,产生0~32767之间的整数;     如:echo $RANDOM

    生成一列整数:

        seq 命令: 默认从1开始,步长为1

            用法: seq 末尾数 或 seq 开始数 末尾数  或 seq 开始数 步长 末尾数

                 使用 -s "分隔符" 可以自定义分隔符, 默认为/n

    shell中使用小数:

        使用bc计算器,linux基本都默认安装, 使用quit 退出; 它可以结合管道符使用;

    shell中常用的条件测试

        1. 判断一条命令是否执行成功?查看返回状态值$?, 如果为0表示成功,否则失败;
        2. 使用test检测文件状态:
            使用方法: 1)test 选项 文件或目录   2)[ 选项 文件或目录 ]
            常用到的测试选项:
                -e 检测对象是否存在,存在则为真;
                -d 检测对象是否是目录;
                -f 检测对象是否是一般文件;
                -r 检测对象是否有可读权限;
                -w 检测对象是否有可写权限;
                -x 检测对象是否有可执行权限;
        3. 使用test 比较整数值:
            使用方法: 1)test 整数值1 选项 整数値2    2)[ 整数值1 选项 整数値2 ]
            常用到的选项:
                -eq 等于(equal)
                -ne 不等于(not equal)
                -ge 大于或等于(greater or equal)
                -le 小于或等于(lesser or equal)
                -gt 大于(greater than)
                -lt 小于(lesser than)
            组合多个条件:
                方法1. test 测试条件1 -a或-o 测试条件2…… ,  其中-a 表示并, -o 表示或;
                方法2. [[ 测试条件1 &&或|| 测试条件2…… ]]
        4. test 比较字符串
            使用方法: [ 字符串1 选项 字符串 ]  或 [ 选项 字符串 ]
            常用选项:
                =  两个字符串相同
                != 两个字符串不相同
                -z 字符串是否为空
                -n 字符串的值不为空
        5. 条件取反
            使用方法: [ ! 测试条件 ]

    字符串处理:

        1. expr substr 字符串 起始位置 截取长度   作用:截取字符串中的一定的长度;
        2. cut 命令:
            用法: 1. cut -c 起始位置-结束位置 文件名    (默认开始位置为1)
                2. cut -d ‘分隔符‘ -f 字段编号 文件名
                3. cut 也可以配合管道符使用
        3. 使用${}表达式
            截取用法: ${变量名:起始位置:截取长度}   (默认的开始位置为0)
            替换用法: ${变量名/old/new}   只替换第一个出现的;
                   ${变量名//old/new}  替换字符串的所有;
        4. 单字替换工具tr
            替换: 命令输出 | tr 'abc' 'ABC'       //把字符a,b,c换为A,B,C,而不是把 abc 换为 ABC
            删除: 命令输出 | tr -d 'ac'           //删除其中的字符a 和 c
        5. 获取文件的路径名与文件名
            获取路径名: dirname "字符串“
            获取文件名: basename "字符串”
        6. 提取命令的输出:
            方法:1. 使用反引号   `可执行命令`
                  2. 使用$()      $(可执行命令)          //它方便命令的嵌套

  • 相关阅读:
    基于XML的声明式事务控制
    spring中JdbcTemplate使用
    四种常用的通知类型(xml)
    AOP配置步骤(XML)
    12388. 图论割边
    12389. 割点
    12206. 电缆网络
    12178. 破坏牛棚
    java反射笔记
    java单元测试
  • 原文地址:https://www.cnblogs.com/yinheyi/p/7760227.html
Copyright © 2011-2022 走看看