美文网首页
音视频学习(三)Shell脚本入门

音视频学习(三)Shell脚本入门

作者: 主音King | 来源:发表于2020-07-24 17:55 被阅读0次

    介绍

    Shell 是用C语言编写的程序,用户使用Linux桥接。Shell是命令语言,又是程序设计语言。访问操作系统内核服务。

    Shell 入门学习

    打开编辑器(vi/vim 命令来创建文件),新建test.sh,扩展名为sh。

    第一个Shell脚本

    ./test.sh
    

    如果有权限问题,则赋予脚本执行权限

    chmod +x ./test.sh
    

    #! 是一个约定的标记,需要什么解释器来执行。
    echo 向窗口输出文本

    变量

    定义变量时

    my_name="George"
    

    注意:变量名和等号之间无空格。同时变量命名需要遵循如下规则

    • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
    • 中间不能有空格,可以使用下划线(_)
    • 不能使用标点符号
    • 不能使用bash里的关键字(可以用help命令查看保留关键字)
      除了显示地直赋值,也可以用语句赋值。
    #!/bin/bash
    # for file in $后边那个不是单引号,是左上角esc下的键,否则不起作用
    for file in $`ls /Users/george/C`
    do
    echo $file
    done
    

    使用变量

    #!/bin/bash
    my_name="George"
    echo $my_name
    # 变量名外面的花括号是可选的
    echo ${my_name}
    

    只读变量

    #!/bin/bash
    # 只读变量
    my_name="George"
    readonly my_name
    my_name="George1"
    

    删除变量:

    #!/bin/bash
    # 变量被删除后不能被再次使用。unset 命令不能删除只读变量
    my_name="George"
    unset my_name
    echo $my_name
    

    变量类型:
    运行shell时,同时存在三种变量

    • 局部变量 脚本或者命令中定义,仅在当前shell例中有效,其他shell启动的程序不能访问局部变量
    • 环境变量 所有程序,包括shell启动的程序
    • shell变量 是由shell程序设定的特殊变量。shell变量中有一部分是环境变量,一部分是局部变量。

    字符串
    字符串可以用单引号或者双引号,也可以不用引号
    单引号字符串限制:

    • 任何字符都会原样输出,字符串中变量是无效的。
    • 不能单独出现,可以成对出现字符串拼接
      双引号优点:
    • 双引号里可以有变量
    • 可以转义字符

    数组
    Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小

    array_name=(value1 ... valuen)
    
    #!/bin/bash
    my_array=(A B "C" D)
    echo "第1个元素为: ${my_array[0]}"
    echo "第2个元素为: ${my_array[1]}"
    echo "第3个元素为: ${my_array[2]}"
    echo "第一个元素为: ${my_array[3]}"
    
    # 使用@ 或 * 可以获取数组中所有元素
    echo "数组的元素为 ${my_array[*]}"
    echo "数组的元素为 ${my_array[@]}"
    
    # 获取数组长度的方法与获取字符串长度的方法相同
    echo "数组元素个数为 ${#my_array[*]}"
    echo "数组元素个数为 ${#my_array[@]}"
    

    运算符

    支持多种运算符,包括:

    • 算数
    • 关系
    • 布尔
    • 字符串
    • 文件测试
      原生bash 不支持简单数学运算,可以通过其他命令实现。例如:awk和expr
      express 是一款表达式计算工具
      注意:
    • 表达式和运算符之间要有空格
    • 完整的表达式要被 ` 包含(Esc键下的键)
      算数运算符
    运算符 说明 举例
    + 加法 expr $a + $b 结果为 30。
    - 减法 expr $a - $b 结果为 -10。
    * 乘法 expr $a \* $b 结果为 200。
    / 除法 expr $b / $a 结果为 2。
    % 取余 expr $b % $a 结果为 0。
    = 赋值 a=$b 将把变量 b 的值赋给 a。
    == 相等。用于比较两个数字,相同则返回 true。 [ a ==b ] 返回 false。
    != 不相等。用于比较两个数字,不相同则返回 true。 [ a !=b ] 返回 true。

    注意:条件表达式要放在方括号之间,并且要有空格

    #!/bin/bash
    a=10
    b=10
    
    val=`expr $a + $b`
    echo "a + b: $val"
    
    val=`expr $a - $b`
    echo "a -b : $val"
    
    val=`expr $b \* $a`
    echo "a * b : $val"
    
    val=`expr $b / $a`
    echo "b / a : $val"
    
    val=`expr $b % $a`
    echo "b % a : $val"
    
    if [ $a == $b ]
    then
        echo "a 等于 b"
    fi
    if [[ $a != $b ]]; 
    then
        echo "a 不等于 b"
    fi
    

    关系运算符
    只支持数字,不支持字符串,除非字符串的值是数字。

    运算符 说明 举例
    -eq 检测两个数是否相等,相等返回 true。 [ a -eqb ] 返回 false。
    -ne 检测两个数是否不相等,不相等返回 true。 [ a -neb ] 返回 true。
    -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ a -gtb ] 返回 false。
    -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ a -ltb ] 返回 true。
    -ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ a -geb ] 返回 false。
    -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ a -leb ] 返回 true。
    #!/bin/bash
    a=10
    b=20
    if [ $a -eq $b ]; 
    then
        echo "$a -eq $b : a 等于 b"
    else
        echo "$a -eq $b a 不等于 b"
    fi
    if [ $a -ne $b ]
    then
        echo "$a -ne $b: a 不等于 b"
    else
        echo "$a -ne $b: a 等于 b"
    fi
    
    if [ $a -gt $b ]
    then
        echo "$a -gt $b: a大于b"
    else
        echo "$a -gt $b: a小于b"
    fi
    
    if [ $a -lt $b ]
    then
        echo "$a -lt $b: a小于b"
    else
        echo "$a -lt $b: a不小于b"
    fi
    
    if [ $a -ge $b ]
    then
        echo "$a -ge $b: a大于或等于b"
    else
        echo "$a -ge $b: a小于b"
    fi
    
    if [ $a -le $b ]
    then
        echo "$a -le $b: a小于或等于b"
    else
        echo "$a -le $b: a大于b"
    fi
    

    总结

    一些shell的命令可以自行补充。

    相关文章

      网友评论

          本文标题:音视频学习(三)Shell脚本入门

          本文链接:https://www.haomeiwen.com/subject/dipykktx.html