• shell脚本学习笔记


    0、赋值变量时等号两边不能有空格,做运算时运算符两侧必须要有空格

    1、readonly 变量名

      将变量设置为只读变量,如:

    name="gnib"
    readonly name

    2、unset 变量名

      删除变量,如:

    name="gnib"
    unset name

    3、字符串既可以使用双引号也可以使用单引号,但是单引号有限制:

    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    • 单引号字串中转义字符无效

    4、字符串拼接

    your_name="qinjx"
    greeting="hello, "$your_name" !"#双引号外拼接
    greeting_1="hello, ${your_name} !"#双引号内拼接
    echo $greeting $greeting_1

    5、#:大括号内的‘#’字符,用于表示结算长度,例如:

    string="abcd"
    echo ${#string} #输出 4
    
    my_array=(A B "C" D)
    echo "数组元素个数为: ${#my_array[*]}" #输出4
    echo "数组元素个数为: ${#my_array[@]}"#输出4
    echo "数组单个元素的长度为: ${#my_array[0]}"#输出1
    
    #补充
    echo "数组元素个数为: ${my_array[*]}" #输出数组所有元素
    echo "数组元素个数为: ${my_array[@]}"#输出数组所有元素

     6、字符串分片(提取子串)

    string="runoob is a great site"
    echo ${string:1:4} # 表示从下标1开始,输出4个字符。输出 unoo

    7、查找子串

    string="runoob is a great company"
    echo `expr index "$string" is`  # 输出 8

    8、作乘法运算时, * 号需要转义

    val=`expr $a * $b`

    9、布尔运算符 -a -o 与逻辑运算符 || && 的使用

    a=10
    b=20
    
    if [ $a -lt 100 -o $b -gt 100 ]
    then
       echo "$a 小于 100 或 $b 大于 100 : 返回 true"
    else
       echo "$a 小于 100 或 $b 大于 100 : 返回 false"
    fi
    
    if [ $a -lt 5 -o $b -gt 100 ]
    then
       echo "$a 小于 5 或 $b 大于 100 : 返回 true"
    else
       echo "$a 小于 5 或 $b 大于 100 : 返回 false"
    fi
    
    if [[ $a -lt 100 && $b -gt 100 ]]
    then
       echo "返回 true"
    else
       echo "返回 false"
    fi
    
    if [[ $a -lt 100 || $b -gt 100 ]]
    then
       echo "返回 true"
    else
       echo "返回 false"
    fi

    10、字符串运算符

    = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
    != 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
    -z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
    -n 检测字符串长度是否为0,不为0返回 true。 [ -n $a ] 返回 true。
    str 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
    a="abc"
    
    if [ $a ]
    then
       echo "字符串不为空"
    else
       echo "字符串为空"
    fi
    
    #字符串不为空

    11、read 命令

    read 命令一个一个词组地接收输入的参数,每个词组需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收。

    read firstStr secondStr
    echo "第一个参数:$firstStr; 第二个参数:$secondStr"
    #输入
    一 二 三 四
    #输出
    第一个参数:一; 第二个参数:二 三 四
    
    
    read -p "请输入一段文字:" -n 6 -t 5 -s password
    echo "
    password is $password"
    #输出
    请输入一段文字:
    password is asdf
  • 相关阅读:
    4章 关键的“构建”决策
    [转]EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
    5章 软件构建中的设计
    网站收集,慢慢积攒
    常见的SQL优化建议
    eclipse 最全快捷键 分享快乐与便捷
    设置Activity全屏和无标题
    Anaroid WebView详解大全
    cordova2.2对于CordovaWebView的配置
    在Android的webview中定制js的alert,confirm和prompt对话框的方法
  • 原文地址:https://www.cnblogs.com/GnibChen/p/8921778.html
Copyright © 2020-2023  润新知