zoukankan      html  css  js  c++  java
  • 单/双中括号与测试条件

    测试命令


    tesst
    []内置命令
    [[]]bash中的关键字

    单中括号


    格式[#express1#op#express2#]
    注意:
      其中#代表括号不能省略
      不能匹配模式
      变量引用应用双引号括起,尤其当变量引用有空格时
      与或非形式-a –o -not
      常量应用单/双引号括起
      整数比较时,< == ...需用反斜号转义,相当于-lt -eq ...

    [root@ZYB ~]# zyb="haha haha"
    [root@ZYB ~]# echo $zyb
    haha haha
    [root@ZYB ~]# [ $zyb == "haha haha" ]
    -bash: [: too many arguments
    [root@ZYB ~]# echo $?
    2
    [root@ZYB ~]# [ "$zyb" == "haha haha" ]
    [root@ZYB ~]# echo $?
    0
    [root@ZYB ~]# [ "$zyb" != "haha haha" ]
    [root@ZYB ~]# echo $?
    1
    [root@ZYB ~]# [ "$zyb" != "hahahaha" ]
    [root@ZYB ~]# echo $?
    0
    [root@ZYB ~]# [ "$zyb" == "hahahaha" ] ; echo $?
    1
    #使用管道输出测试结果有问题`
    [root@ZYB ~]# [ "$zyb" == "hahahaha" ] | echo $?
    0
    

    双中括号


    格式[[#pattern1#op#pattern2#]]
    注意:
      其中#代表括号不能省略
      可用于模式匹配,支持正则表达式
      变量引用最好用双引号括起,匹配的模式中的单双引号都代表符号自身
      与或非形式&& || !
      整数比较时,< == ...需用反斜号转义,相当于-lt -eq ...

    [root@ZYB ~]# zyb=""haha haha""
    [root@ZYB ~]# echo $zyb
    "haha haha"
    [root@ZYB ~]# [[ $zyb == ?haha?haha? ]] ; echo $?
    0
    [root@ZYB ~]# [[ "$zyb" == ?haha?haha? ]] ; echo $?
    0
    [root@ZYB ~]# [[ "$zyb" == "haha?haha" ]] ; echo $?
    1
    

    算术表达


    let var_name=算术表达式
    let var_name+=valuelet不能省略
    let var_name++let不能省略
    var_name=$[算术表达式]算术表达式空格较随意
    var_name=$((算术表达式))算术表达式空格较随意
    var_name=${var_name:-value}var_name非空保留原值;var_name空赋值value

    [root@ZYB ~]# num=1+2; echo $num
    1+2
    [root@ZYB ~]# let num=1+2 ; echo $num
    3
    [root@ZYB ~]# var_name=1; echo $var_name 
    1
    [root@ZYB ~]# let var_name+=2; echo $var_name 
    3
    [root@ZYB ~]# var_name+=2 ; echo $var_name 
    32
    

    测试条件


    布尔运算:与&&||!
    组合条件测试:与-a-o-not
    二元整数测试:num1 op num2
      -eq等于  -ne不等于
      -le小于等于  -ge大于等于  -lt小于  -gt大于
    双目字符测试:str1 op str2
      ==等于  !=<>不等于  >大于  <小于
      =~左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配,通常只在[[]]中使用,模式中可以使用行首、行尾锚定符,但是模式不要加引号
    单目字符测试:
      -n str不空为真,空为假
      -z str空为真,不空为假
    单目文件测试op /path/to/somefile
      -e文件是否存在  -a同前  -f普通文件  -d目录
      -b存在且块设备  -c存在且字符设备  -h/-L存在且符号链接
      -p存在且管道  -S存在且套接字  -s存在且不为空
      -r存在且有读权限  -w存在且有写权限  -x存在且执行权限
    双目文件测试file1 op file2
      -ntfile1比file2新
      -otfile1比file2老
      -effile1与file2是否指向同一个文件,包括软硬链接

  • 相关阅读:
    aaa
    记一次Vue实战总结
    Data too long for column 'xxx' at row 1MySql.Data.MySqlClient.MySqlPacket ReadPacket() 报错解决
    uni-app 监听返回按钮
    微信H5分享外部链接,缩略图不显示
    uni-app 动态控制下拉刷新
    vueX 的使用
    uni-app H5 腾讯地图无法导航
    uni-app支付功能
    hooks 与 animejs
  • 原文地址:https://www.cnblogs.com/hesper/p/8901774.html
Copyright © 2011-2022 走看看