linux命令if_linux命令 if - CSDN
  • 声明:允许转载,转载请注明链接,谢谢合作! 1 字符串判断 str1 = str2 当两个串有相同内容、长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时...
    声明:允许转载,转载请注明链接,谢谢合作!

    1 字符串判断

    str1 = str2      当两个串有相同内容、长度时为真
    str1 != str2     当串str1和str2不等时为真
    -n str1       当串的长度大于0时为真(串非空)
    -z str1       当串的长度为0时为真(空串)
    str1           当串str1为非空时为真

    \ >  \ <                               比较大小的时候可以使用大于号,小于号,但是需转义。

    2 数字的判断

    int1 -eq int2    两数相等为真
    int1 -ne int2    两数不等为真
    int1 -gt int2    int1大于int2为真
    int1 -ge int2    int1大于等于int2为真
    int1 -lt int2    int1小于int2为真
    int1 -le int2    int1小于等于int2为真

    3 文件的判断

    -r file     用户可读为真
    -w file     用户可写为真
    -x file     用户可执行为真
    -f file     文件为正规文件为真
    -d file     文件为目录为真
    -c file     文件为字符特殊文件为真
    -b file     文件为块特殊文件为真
    -s file     文件大小非0时为真
    -t file     当文件描述符(默认为1)指定的设备为终端时为真

    3 复杂逻辑判断

    -a       与
    -o       或
    !        非

    4字符串匹配

    if [  `echo $str | grep -e regexp`  ];then


    if判断式
    if [ 条件判断一 ] && (||) [ 条件判断二 ]; then
    elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then
    else
       执行第三段內容程式
    fi


    shell判断数组中是否包含某个元素:

    ary=(1 2 3)

    a=2

    if [[ "${ary[@]}" =~ "$a" ]] ; then
        echo "a in ary"
    else
        echo "a not in ary"
    fi

    判读字符串($str)是否包含另一个字符串($str1):

    if [  `echo $str | grep -e '$str1'`  ] ; then

        echo yes

    fi

    e.g#参数总数不等于 1

    if [ $# -ne 1 ]; then

      echo "usage : $0 table_name"

      exit 1

     

    fi

    e.g#判断hdfs_home是否为空

    if [ -z "$HDFS_HOME" ]; then

      echo "hdfs_home not defined, exiting"

      exit 1

    fi

    展开全文
  • linux结构化命令:if-then

    2017-11-27 19:58:28
    一、在java中,if条件是使用TURE或者FALSE来做判断,在shell中,则是根据命令的退出状态来的。 如果如果成功执行命令,状态为0,则执行then后面的命令,如果没有成功执行命令,状态为0 以外的其他值,则then后面的...

    最基本的if-then结构:

    if  commond

    then  

    commonds

    fi


    一、在java中,if条件是使用TURE或者FALSE来做判断,在shell中,则是根据命令的退出状态来的。

    如果如果成功执行命令,状态为0,则执行then后面的命令,如果没有成功执行命令,状态为0

    以外的其他值,则then后面的命令则不会执行。bash shell 会移动到脚本的下一条命令。


    如下是一个脚本:test1.sh



    执行结果如下:



    可以看到,在第一个if条件中,"dafadfa"肯定是执行不了的,所以报错"command not found”

    在 “elif” 中,"date"执行成功,返回0,所以执行了then后面的打印


    二、利用test命令做条件判断

    在上面的脚本中,if判断的依据都是根据if条件中的命令是否能够执行来作为依据,然而在很多情况下,我们需要比较大小,比较是否

    相等。。。我们可以利用test命令,来达到我们的目的。


    test命令提供一种检测if-then语句中不同条件的方法。如果test命令中列出的条件评估值为true,test命令则以0的状态码。这是if-then与

    其他编程语言中的if-then一样的方法运行。如果test命令中列出的评估值为false,则if-then语句失败

    test使用如下:

    if  test condition

    then

    commonds

    fi


    还有另外一种方式:

    if  [ condition]

    then 

    commdonds

    fi


    test命令能够评估一下三类条件:

    1、数值比较

    2、字符串比较

    3、文件比较


    a、数值比较


    测试脚本test2.sh:



    执行test2.sh,结果如下:



    b、字符串比较



    c、文件比较



    展开全文
  • && || test

    && 和 ||

    &&:用来执行条件成立后执行的命令
    ||:用来执行条件不成立后的执行命令

    示例:
    在这里插入图片描述

    [root@localhost mnt]# id toto   # 用户toto不存在无法查看
    id: toto: no such user
    [root@localhost mnt]# id toto &> /dev/null && echo yes || echo no  # 判断用户是否存在
    no    # 由于用户不存在 条件不成立 所以输出no
    [root@localhost mnt]# useradd toto   # 创建用户之后 用户存在 
    [root@localhost mnt]# id toto &> /dev/null && echo yes || echo no  # 条件成立 输出yes
    yes
    

    测试:检测是否能够ping通 主机 172.25.47.204 ,通则输出yes,不通则输出no
    在这里插入图片描述

    编写脚本,用以检测网络能否ping通
    可以ping通输出此ip is up;ping不通输出 此ip is down

    在这里插入图片描述
    在这里插入图片描述

    test 命令

    test命令通常做判断, test 命令和 [ ] 等同

     [ "$A" = "$B"  ]        	                ##是否相等
     [  "$A" != "$B"  ]        	                ##是否不相等
     [  "$A" -eq "$B"  ]      	                ##是否相等
     [  "$A" -ne "$B"  ]       	                ##是否不相等
     [  "$A" -le "$B"  ]       	                ##是否小于等于
     [  "$A" -lt "$B"  ]                        ##是否小于
     [  "$A" -ge "$B "  ]                       ##是否大于等于
     [  "$A" -gt "$B"  ]                        ##是否大于
     [  "$A" -ne "$B" -a "$A" -gt "$B"  ]       ##A 不等于 B 并且 A 大于B
     [  "$A" -ne "$B" -o "$A" -gt "$B"  ]       ##A不等于B 或者  A大于B
     [  -z "$A"  ]                              ##是否为空
     [  -n "$A"  ]                              ##是否不为空
    
    示例

    1 test命令通常做判断, test 命令和 [ ] 等同

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=1
    [root@localhost mnt]# test "$a" = "$b" && echo yes || echo no
    yes
    [root@localhost mnt]# [ "$a" = "$b" ] && echo yes || echo no
    yes
    [root@localhost mnt]# test "$a" != "$b" && echo yes || echo no
    no
    [root@localhost mnt]# [ "$a" != "$b" ] && echo yes || echo no
    no
    

    2 -eq ##等于

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=1
    [root@localhost mnt]# [ "$a" = "$b" ] && echo yes || echo no
    yes
    [root@localhost mnt]# [ "$a" -eq "$b" ] && echo yes || echo no
    yes
    

    3 -ne ##不等于

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=1
    [root@localhost mnt]# [ "$a" -ne "$b" ] && echo yes || echo no
    no
    [root@localhost mnt]# b=2
    [root@localhost mnt]# [ "$a" -ne "$b" ] && echo yes || echo no
    yes
    

    4 -le ##小于等于

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=2
    [root@localhost mnt]# [ "$a" -le "$b" ] && echo yes || echo no
    yes
    [root@localhost mnt]# b=1
    [root@localhost mnt]# [ "$a" -le "$b" ] && echo yes || echo no
    yes
    [root@localhost mnt]# b=0
    [root@localhost mnt]# [ "$a" -le "$b" ] && echo yes || echo no
    no
    

    5 -lt ##小于

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=2
    [root@localhost mnt]# [ "$a" -lt "$b" ] && echo yes || echo no
    yes
    [root@localhost mnt]# b=1
    [root@localhost mnt]# [ "$a" -lt "$b" ] && echo yes || echo no
    no
    

    6 -ge ##大于等于

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=2
    [root@localhost mnt]# [ "$a" -ge "$b" ] && echo yes || echo no
    no
    [root@localhost mnt]# a=2
    [root@localhost mnt]# [ "$a" -ge "$b" ] && echo yes || echo no
    yes
    [root@localhost mnt]# a=3
    [root@localhost mnt]# [ "$a" -ge "$b" ] && echo yes || echo no
    yes
    

    7 -gt ##大于

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=1
    [root@localhost mnt]# [ "$a" -gt "$b" ] && echo yes || echo no
    no
    [root@localhost mnt]# a=2
    [root@localhost mnt]# [ "$a" -gt "$b" ] && echo yes || echo no
    yes
    

    8 -a ##同时满足

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=2
    [root@localhost mnt]# c=3
    [root@localhost mnt]# [ "$a" -lt "$b" -a "$b" -lt "$c" ] && echo yes || echo no
    yes
    [root@localhost mnt]# b=1
    [root@localhost mnt]# [ "$a" -lt "$b" -a "$b" -lt "$c" ] && echo yes || echo no
    no
    

    9 -o ##两个条件满足其中一个就可以

    [root@localhost mnt]# a=1
    [root@localhost mnt]# b=2
    [root@localhost mnt]# c=3
    [root@localhost mnt]# [ "$a" -lt "$b" -o "$b" -gt "$c" ] && echo yes || echo no
    yes
    [root@localhost mnt]# [ "$a" -gt "$b" -o "$b" -gt "$c" ] && echo yes || echo no
    no
    

    10 -z ##是否为空

    [root@localhost mnt]# c=''
    [root@localhost mnt]# [ -z  "$c" ] && echo yes || echo no
    yes
    [root@localhost mnt]# c=2
    [root@localhost mnt]# [ -z  "$c" ] && echo yes || echo no
    no
    

    11 -n ##不为空

    [root@localhost mnt]# c=''
    [root@localhost mnt]# [ -n  "$c" ] && echo yes || echo no
    no
    [root@localhost mnt]# c=2
    [root@localhost mnt]# [ -n  "$c" ] && echo yes || echo no
    yes
    
    一个文件具体属于什么类型
    [ -f “file” ]                 ##普通文件为真
    [ -e “file” ]                 ##文件存在为真
    [ -L “file” ]                 ##软链接为真
    [ -S “file” ]                 ##套节字为真
    [ -b “file” ]                 ##硬盘设备为真
    [ -d “file” ]                 ##目录为真
    [ -c “file” ]                 ##字符设备为真
    [ “file1” -ef “file2” ]       ##两文件为同一个文件为真
    [ “file1” -nt"file2" ]        ##文件1比文件2创建的晚为真
    [ “file1” -ot “file2” ]       ##文件1比文件2创建的早为真
    

    示例:
    [ “file1” -ef “file2” ] ##两文件为同一个文件为真

    [root@localhost mnt]# touch file1
    [root@localhost mnt]# ln file1 file2
    [root@localhost mnt]# ls 
    file1  file2  ping.sh
    [root@localhost mnt]# ls -i
    8845808 file1  8845808 file2  8845813 ping.sh
    [root@localhost mnt]# [ "file1" -ef "file2" ] && echo yes || echo no
    yes
    [root@localhost mnt]# [ "file1" -ef "ping.sh" ] && echo yes || echo no
    no
    

    [ “file1” -nt"file2" ] ##文件1比文件2创建的晚为真
    [ “file1” -ot “file2” ] ##文件1比文件2创建的早为真

    [root@localhost mnt]# ll
    total 0
    -rw-r--r--. 1 root root 0 May 20 06:25 file1
    -rw-r--r--. 1 root root 0 May 20 06:27 file2
    [root@localhost mnt]# [ "file1" -nt "file2" ] && echo yes || echo no
    no
    [root@localhost mnt]# [ "file1" -ot "file2" ] && echo yes || echo no
    yes
    
    测试1 编写脚本 判断输出文件类型

    在这里插入图片描述
    在这里插入图片描述

    测试2 编写脚本 创建或者删除用户

    当创建用户时,用户存在则输出用户存在,不存在则建立用户
    当删除用户时,用户存在则删除用户,用户不存在则输出用户不存在

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Linuxif语句用法总结

    2020-04-26 18:11:26
    shell中的逻辑判断一般用if语句,if语句中通常用[]来表示条件测试,可以比较字符串、判断文件是否存等。 if … else 语句常用基本的语法如下: 1.if [];then fi 语句 建一个测试脚本test.sh如下 #!/bin/bash a=$1 b=...

    shell中的逻辑判断一般用if语句,if语句中通常用[]来表示条件测试,可以比较字符串、判断文件是否存等。备注:[ ] 中表达式两边与括号之间要有空格
    if … else 语句常用基本的语法如下:
    1.if [];then fi 语句
    建一个测试脚本test.sh如下

    #!/bin/bash
    a=$1
    b=$2
    if [ $a == $b ];then
       echo "a and b is equal"
    fi
    if [ $a != $b ];then
       echo "a and b is not equal"
    fi
    

    执行命令sh test.sh 2 3给参数$1和$2赋值2和3,输出结果a and b is not equal
    不加else的if语句表达式成立执行then后面的语句,表达式不成立则不执行任何命令。
    2.if [];then else fi 语句

          if [ expression ];then
                executed Statement_expression_true
                else
                executed Statement_expression_false
            fi
    

    备注:expression表达式 和方括号[ ]之间必须有空格,否则会有语法错误。如果表达式成立,then后面的语句将会被执行;如果表达式不成立则执行else后面的语句。

    3.if [];then elif []; then else fi 语句,哪个expression表达式成立则执行哪个then后面的语句,否则执行else后面的语句。

    if [ expression1 ];then
        executed Statement_expression1_true
     elif [ expression2 ];then
        executed Statement_expression2_true
     else
        executed Statement_expression1_2_false
     fi
    
    #!/bin/bash
    a=$1
    b=$2
    if [ $a == $b ];then
       echo "a and b is equal"
    elif [ $a -lt $b ];then
       echo "a less than b"
    else
       echo "a bigger than b"  
    fi
    

    例如建个测试脚本test.sh如上,执行命令sh test.sh 2 3给参数$1$2赋值23,输出结果a less than b;执行sh test.sh 3 2 结果为a bigger then b

    #!/bin/bash
    a=$1
    b=$2
    if [ $a == $b ];then
       echo "a and b is equal"    
    else
       if [ $a -lt $b ];then
         echo "a less than b"        
       else
          echo "a bigger than b"        
       fi
    fi
    

    上述脚本,if … else 语句嵌套使用的效果与if … elif … fi 语句效果类似,但是if … elif … fi 语句要精简些

    4.if … else 语句也经常与 test 命令结合使用,test 命令用于检查某个条件是否成立,与方括号[ ]功能类似

    #!/bin/bash
    a=$1
    b=$2
    if test $a == $b;then
       echo "a and b is equal"
    else
       echo "a and b is not equal"  
    fi
    

    例如上述脚本,其中if test $a == $b;if [ $a == $b ];效果一样。

    5.if语句常用命令选项有:
    == or =: 等于
    -eq : 等于
    -ne :不等于
    -gt :大于
    -ge :大于等于
    -lt :小于
    -le :小于等于

    命令选项 描述
    if [ a = b ] a与b是否相等 (a、b是数值)
    if [ a -ge b ] a 是否大于等于 b
    if [ a -gt b ] a 是否大于 b
    if [ a -le b ] a 是否小于等于 b
    if [ a -lt b ] a 是否小于 b
    if [ a -ne b ] a 是否不等于 b
    if [ str1 = str2 ] str1是否与str2相同(str1、str2是字符串)
    if [ str1 != str2 ] str1是否与str2不同
    if [ str1 < str2 ] str1是否小于str2
    if [ str1 > str2 ] str1是否da于str2
    if [ -n str ] 判断str长度是否非零
    if [ -z str ] str长度是否为0
    if [ -d file ] 判断file是否为一个目录
    if [ -e file ] 判断file是否存在
    if [ -f file ] 检查file文件是否存在
    if [ -r file ] 判断file是否存在并可读
    if [ -s file ] 判断file是否存在并非空
    if [ -w file ] 判断file是否存在并可写
    if [ -x file ] 判断file是否存在并可执行

    例如下面脚本判断压缩包文件是否存在

       #!/bin/bash 
        Day=`date -d yesterday +%Y%m%d` 
        FILE=access_${Day}.log.tgz
        WORK_DIR= /data/nginx/logs
        if [ -f ${WORK_DIR}/${FILE} ];then 
         echo "OK" 
        else 
         echo "${FILE} backup fail" > error.log 
        fi
    

    例如判断日志文件中是否存在error

    #!/bin/bash
    WORK_DIR=/home/hadoop/ktl_wks
    LOG_DATE=`date +%Y%m%d`
    LOG_TIME=`date +%H%M%S`
    LOGFILE=${WORK_DIR}/log/${LOG_DATE}${LOG_TIME}_start.log
    #检查执行是否正常
    ERR_LOG=`cat ${LOGFILE} | grep 'error' | awk -F ' ' '{print $1}'`
    
    if [ -z ${ERR_LOG} ];then
      echo `date +'%Y-%m-%d %H:%M:%S'`" 日志检查结束,检查结果为:正常." >> ${LOGFILE} 2>&1 
    else
      echo `date +'%Y-%m-%d %H:%M:%S'`" 日志检查结束,检查结果为:发现异常!!" >> ${LOGFILE} 2>&1 
    fi
    
    展开全文
  • Linux中的if-then语句

    2018-01-12 23:27:53
    但是linuxif只能根据条件命令的退出状态码来判断。如果命令成功执行,则状态退出码为0,执行then部分的代码。比如: if pwd then echo the command is ok fi test可以提高if-then的条件判断能力,test命令中列...
  • 多个命令可以放在一行上,其执行情况得依赖于用在命令之间的分隔符。 如果每个命令被一个分号 (;) 所分隔,那么命令会连续的执行下去,如: 引用 beyes@linux-beyes:/proc> printf "%s/n" "This is ...
  • Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解...
  • Java执行Linux命令

    2018-05-16 13:10:05
    最近工作中需要在Java中执行Linux命令,对遇到的坑做一个小结。API把要执行的命令作为exec方法的参数,返回一个Process对象代表命令执行的进程。由于执行完命令通常要获取输出显示出来,因此对执行命令并获取输出的...
  • 转自:... python中执行linux命令 python中执行linux命令: os.system(cmd) 如果要把返回信息置入变量中: textlist = os.popen(cmd) 例: cmd = 'ps -ef ' textli
  • linux命令——man

    2018-07-14 22:41:40
    Shell(也称为终端或壳)用户与Linux系统的交互常见执行Linux命令的格式是这样的: 命令名称 [命令参数] [命令对象]注意,命令名称、命令参数、命令对象之间请用空格键分隔。命令对象一般是指要处理的文件、目录、...
  • linux if命令

    2010-01-11 16:12:00
    linux if命令 无论什么编程语言都离不开条件判断。SHELL也不例外。 if list then do something here elif list then do another thing here else do something else here
  • 注意要在终端中执行命令:python test.py os.system(cmd) 返回值为0:代表成功;1:代表失败 os.popen(cmd) 将执行结果返回,但是测试表示并没有,具体原因后期记得更新 连续执行多条命令 os.popen("cd.. &...
  • nodejs调用linux命令

    2017-04-11 11:34:12
    nodejs调用linux命令
  • linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们的选择自动执行命令,那岂不是完美,本脚本就是为此...
  • Golang 调用 Linux 命令

    2018-07-02 18:34:54
    Golang 调用 Linux 命令 Golang  struggling 2年前 (2016-12-22) 1448次浏览 已收录  1个评论Golang 中可以使用 os/exec 来执行 Linux 命令,下面是一个简单的示例: package main import ( "...
  • linux shell 条件判断if else, if elif else....
  • java 代码执行linux命令

    2019-04-25 16:11:21
    远程执行linux命令代码 代码不是在服务器部署时,但是需要执行这个服务器的linux命令 package com.demo.common.linux; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; ...
  • Linux shell if 语句无法识别命令 这两天看了一些shell编程的东西,在按照书上的代码编写运行的时候出现了意想不到的错误,明明很简单的if else语句硬是搞了一天才搞明白! shell 版本:bash 5.0 + vi文本编辑器 ...
  • Linux命令提示符太长

    2018-08-13 23:21:48
    如果命令提示符占据绝大部分,留给我们输入命令的空间就有限,当然也可以换行,但是这不够直观。 问题 在我的终端里,我实际的命令是cat spark-defaults.conf.template | grep &quot;spark&quot;,但是...
  • 转载《利用Linux命令行进行文本按行...linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能。本文这里举例说明如何利用Linux命令行进行文本按行去重并按重复次数排序。主要用到的命令有
1 2 3 4 5 ... 20
收藏数 410,305
精华内容 164,122
关键字:

linux命令if