• Linux shell 逻辑判断符号


    Linux shell 逻辑判断符号

    1. 关于档案与目录的侦测逻辑卷标!(不支持模糊查询:如if [ -d "tomcat*"  ])

    -f 常用!侦测『档案』是否存在

    -d 常用!侦测『目录』是否存在

    -b 侦测是否为一个『 block 档案』

    -c 侦测是否为一个『 character 档案』

    -S 侦测是否为一个『 socket 标签档案』

    -L 侦测是否为一个『 symbolic link 的档案』

    -e 侦测『某个东西』是否存在!

    2. 关于程序的逻辑卷标!

    -G 侦测是否由 GID 所执行的程序所拥有

    -O 侦测是否由 UID 所执行的程序所拥有

    -p 侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)

    3. 关于档案的属性侦测!

    -r 侦测是否为可读的属性

    -w 侦测是否为可以写入的属性

    -x 侦测是否为可执行的属性

    -s 侦测是否为『非空白档案』

    -u 侦测是否具有『 SUID 』的属性

    -g 侦测是否具有『 SGID 』的属性

    -k 侦测是否具有『 sticky bit 』的属性

    4. 两个档案之间的判断与比较 ;例如『 test file1 -nt file2 』

    -nt 第一个档案比第二个档案新

    -ot 第一个档案比第二个档案旧

    -ef 第一个档案与第二个档案为同一个档案( link 之类的档案)

    5. 逻辑的『和(and)』『或(or)』

    && 逻辑的 AND 的意思

    || 逻辑的 OR 的意思

    6.运算符号代表意义

    = 等于

    != 不等于

    < 小于

    > 大于

    -eq 等于

    -ne 不等于

    -lt 小于

    -gt 大于

    -le 小于或等于

    -ge 大于或等于

    -a 双方都成立(and)

    -o 单方成立(or)

    -z 空字符串

    -n 非空字符串

    【注意进行逻辑判断,条件要用双引号:例如

    #!/usr/bin/ksh

    #set -x

    kill_java_ps()

    {

    ps_java=`ps -A | grep java | awk '{print $1}'`

    if [ -z "${ps_java}" ];then

     echo "no java ps!"

    else

      kill -9 $ps_java

      if [ $? -eq 0 ];then

           echo "kill java  successfully!"

        else

           echo "kill java fail!"

      fi

    fi

     

    }

     

    kill_java_ps

     

     

     

     

    补充

    Shell字符串比较 收藏
    Shell 中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等。
    二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.


    --------------------------------------------------------------------------------

    整数比较

    -eq       等于,如:if [ "$a" -eq "$b" ]
    -ne       不等于,如:if [ "$a" -ne "$b" ]
    -gt       大于,如:if [ "$a" -gt "$b" ]
    -ge       大于等于,如:if [ "$a" -ge "$b" ]
    -lt       小于,如:if [ "$a" -lt "$b" ]
    -le       小于等于,如:if [ "$a" -le "$b" ]
    <       小于(需要双括号),如:(("$a" < "$b"))
    <=       小于等于(需要双括号),如:(("$a" <= "$b"))
    >       大于(需要双括号),如:(("$a" > "$b"))
    >=       大于等于(需要双括号),如:(("$a" >= "$b"))


    --------------------------------------------------------------------------------

    字符串比较

    =       等于,如:if [ "$a" = "$b" ]
    ==       等于,如:if [ "$a" == "$b" ],与=等价
           注意:==的功能在[[]]和[]中的行为是不同的,如下:
           1 [[ $a == z* ]]    # 如果$a以"z"开头(模式匹配)那么将为true
           2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
           3
           4 [ $a == z* ]      # File globbing 和word splitting将会发生
           5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
           一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
           但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
    !=       不等于,如:if [ "$a" != "$b" ]
           这个操作符将在[[]]结构中使用模式匹配.
    <       小于,在ASCII字母顺序下.如:
           if [[ "$a" < "$b" ]]
           if [ "$a" \< "$b" ]
           注意:在[]结构中"<"需要被转义.
    >       大于,在ASCII字母顺序下.如:
           if [[ "$a" > "$b" ]]
           if [ "$a" \> "$b" ]
           注意:在[]结构中">"需要被转义.
           具体参考Example 26-11来查看这个操作符应用的例子.
    -z       字符串为"null".就是长度为0.
    -n       字符串不为"null"
           注意:
           使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
           或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
           以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.


    --------------------------------------------------------------------------------

    Shell数字比较举例

    方法一: if [ ${A} -lt ${B} ]; then ...
    这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;缺点:只能比较整数,使用lt,gt等不直观
    方法二: if ((${A} < ${B})) then ...
    这是CShell风格比较,优点:不用使用lt,gt等难记的字符串;缺点:还是只能比较整数
    方法三: if (echo ${A} ${B} | awk '!($1>$2){exit 1}') then ...
    这是使用awk比较,优点:可以比较小数;缺点:表达式太复杂,难记
    方法四: if (echo ${A} - ${B} | bc -q | grep -q "^-"); then ...
    这是使用bc计算比较,优点:可以比较小数;缺点:表达式更复杂,难记


    --------------------------------------------------------------------------------

    Shell计算

    方法一:typeset C=$(expr ${A} + ${B}); / typeset C=·expr ${A} + ${B}·;

    shell中的基本工具,优点:方便检测变量是否为数字;缺点:只能计算整数,且只能计算加减法,不能计算乘除法
    方法二:let "C=${A}+${B}"; 或 let "C=A+B"
    内嵌命令计算,优点:能计算乘除法及位运算等;缺点:只能计算整数
    方法三:typeset C=$((A+B))
    CShell风格的计算,优点:能计算乘除法及位运算等,简介,编写方便;缺点:不能计算小数
    方法四:typeset C=${echo ${A} ${B} | awk '{print $1+$2}')
    使用awk计算,优点:能计算小数,可以实现多种计算方式,计算灵活;缺点:表达式太复杂
    方法五:typeset C=${echo ${A} + ${B} | bc -q)
    使用awk计算,优点:能计算小数,计算方式比awk还多,计算灵活;缺点:表达式太复杂,小数点后面的位数必须使用scale=N来设置,否则可能会将结果截断为整数


    --------------------------------------------------------------------------------

    awk '{print $2}' class.txt | grep '^[0-9.]' > res
    –b 当file存在并且是块文件时返回真
    -c 当file存在并且是字符文件时返回真
    -d 当pathname存在并且是一个目录时返回真
    -e 当pathname指定的文件或目录存在时返回真
    -f 当file存在并且是正规文件时返回真
    -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
    -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
    -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
    -p 当file存在并且是命令管道时返回为真
    -r 当由pathname指定的文件或目录存在并且可读时返回为真
    -s 当file存在文件大小大于0时返回真
    -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
    -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
    -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真

     

     

  • 相关阅读:
    SharePoint 2013 商务智能报表发布
    sharepoint designer web 服务器似乎没有安装microsoft sharepoint foundation
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 入门教程之创建及修改母版页
    SharePoint 2013 入门教程之创建页面布局及页面
    SharePoint 2010 级联下拉列表 (Cascading DropDownList)
    使用SharePoint Designer定制开发专家库系统实例!
    PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3135384.html
Copyright © 2020-2023  润新知