zoukankan      html  css  js  c++  java
  • 12、运算符、流程控制

    一 运算符

    1 算术运算符:+ - * / %

         例:[root@bogon ~]# echo $[5+2]

                 7

    2 关系操作

    与(())连用   :< >   <=  >=  ==  !=  &&  ||

    test命令相关,[]可以达到一样的效果

    [root@bogon ~]#x=1

    [root@bogon ~]#[$x-gt 1]

    [root@bogon ~]#echo $?

    0

    3 赋值运算符

    =   +=    *=   /=   %=

    [root@bogon ~]#x=10

    [root@bogon ~]#((x%3))

    [root@bogon ~]#echo $x

    10

    [root@bogon ~]#((x%=3))

    [root@bogon ~]#echo $x

    1

    4 测试操作

     4.1  测试文件状态

    -d 目录
    -s 文件长度 > 0、非空
    -f 正规文件
    -w 可写

    -r 可读

    -x 可执行

    -L 符号连接

    -u 文件有 suid 位设置

     4.2  字符串测试

    = 两个字符串相等
    != 两个字符串不相等
    -z 空串
    -n 非空串

    [root@bogon ~]# var1='abc'
    [root@bogon ~]# var2='123'
    [root@bogon ~]# [ $var1 == $var2 ]
    [root@bogon ~]# echo $?
    1

     4.3  测试数值

    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -ge 大于等于
    -le 小于等于

    [root@bogon ~]# [ 10000 -gt 250 ] #不要使用大于号小于号等于号等,要使用man test中规定的,详见下一小节4拓展
    [root@bogon ~]# echo $?
    0

     4.4  拓展测试符号[[]](())

    数字测试符号
    # [ 10 < 2 ] # 语法错误
    -bash: 2: 没有那个文件或目录


    # [[ 2 > 10 ]] # 结果错误
    # echo $?
    0
    # [[ 20 > 10 ]] # 正确
    # echo $?
    0
    # (( 10 < 20 ))
    # echo $?
    0

    字符测试
    # [ "aa" = "aa" ]
    # echo $?
    0
    # [[ "aa" = "aa" ]]
    # echo $?
    0
    # (( "aa" = "aa" )) #结果错误
    # echo $?
    1
    混合测试
    # [ a = a -a 10 < 20 ]
    -bash: 20: 没有那个文件或目录
    [root@seker ~]# [[ a = a -a 10 < 20 ]]
    -bash: syntax error in conditional expression
    -bash: syntax error near `-a'
    [root@seker ~]# [[ a = a && 10 < 20 ]]
    [root@seker ~]# echo $?
    0
    [root@seker ~]# [[ a = a || 10 < 20 ]]
    [root@seker ~]# echo $?
    0
    [root@seker ~]# (( a = a || 10 < 20 ))
    [root@seker ~]# echo $?
    0
    [root@seker ~]# (( a = a && 10 < 20 ))
    [root@seker ~]# echo $?
    0
    [root@seker ~]# 
    结论: 
    比较数字,使用(( ))
    其他测试使用 [[ ]]
    包含数字比较的混合测试,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))

    两个文件的比较
    FILE1 -ef FILE2
    测试两个文件是否是相同的inode
    有时为了找到同一个INODE号的文件 更倾向于使用 find 命令的 -inum 或 --samefile

    FILE1 -nt FILE2
    FILE1 is newer (modification date) than FILE2

    FILE1 -ot FILE2
    FILE1 is older than FILE2

     

  • 相关阅读:
    sqli29-32环境搭建(winserver)
    sqli-labs(Basic)
    SQL语句
    8月10号
    8月9号
    第五周进度报告
    8月8号
    8月7号
    8月6号
    大道至简读后感
  • 原文地址:https://www.cnblogs.com/f1443526266/p/6946316.html
Copyright © 2011-2022 走看看