Linux中if语句用法总结

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
  • 35
    点赞
  • 203
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 如果语句是 shell 脚本的一种判断语句,允许在特定条件为真时执行一组命令,并在特定条件为假时执行另一组命令。语法格式如下: ``` if [ condition ]; then commands1 else commands2 fi ``` 其 `condition` 是一个测试命令,如果其返回值为真,则执行命令 `commands1`,否则执行命令 `commands2`。 ### 回答2: if语句是shell编程最基本的控制结构之一,它允许根据条件执行不同的命令或语句块。if语句的基本语法如下: ``` if condition then command1 command2 ... else command3 command4 ... fi ``` 其,condition是一个测试条件,可以使用比较操作符(例如-eq、-ne、-lt、-gt、-le、-ge)、逻辑操作符(例如&&和||)、以及test命令来测试。如果condition为真,那么if语句then到else之间的部分会被执行,否则执行else到fi之间的部分(如果有的话)。注意,if、then、else和fi这些关键字都需要用空格分开。 下面是一个简单的例子: ``` #!/bin/bash FILE="example.txt" if [ -e "$FILE" ] then echo "$FILE exists." else echo "$FILE does not exist." fi ``` 这个脚本会测试example.txt文件是否存在。如果存在,会输出“example.txt exists.”,否则输出“example.txt does not exist.”。 除了基本语法,if语句还可以使用嵌套的形式来实现更复杂的控制结构。例如: ``` if [ "$VAR1" = "value1" ] then if [ "$VAR2" -lt "10" ] then echo "VAR1 is value1 and VAR2 is less than 10." else echo "VAR1 is value1 but VAR2 is not less than 10." fi else echo "VAR1 is not value1." fi ``` 这个脚本会先测试VAR1变量是否等于value1,如果是,再测试VAR2是否小于10。如果VAR1不是value1,就直接输出“VAR1 is not value1.”。 总之,if语句是shell编程非常基本的控制结构,可以根据条件执行不同的命令和语句块。学习if语句的基本语法和使用方法,对于编写复杂的shell脚本非常有帮助。 ### 回答3: 在 Linux shell ,if 语句是一种用于控制流程的条件语句,通常用于判断某个表达式是否成立以执行特定的代码块。if 语句的基本格式为: ``` if [ 条件表达式 ]; then # 条件成立时执行的代码块 else # 条件不成立时执行的代码块 fi ``` 其,条件表达式一般是一个命令或变量判断的逻辑表达式,如 `if [ $a -eq 1 ]`,表示当变量 `$a` 等于 1 时条件成立;`if [ -f file.txt ]`,表示当当前目录下有名为 file.txt 的文件时条件成立。如果条件成立,则执行 then 后面的代码块,否则执行 else 后面的代码块。 还可以用 elif 关键字设置多个条件分支,格式如下: ``` if [ 条件表达式1 ]; then # 条件1成立执行的代码块 elif [ 条件表达式2 ]; then # 条件2成立执行的代码块 else # 以上条件都不成立则执行的代码块 fi ``` 除了直接在 if 语句行写条件表达式外,我们还可以采用变量或命令的方式来构造条件表达式,常用的有: - 命令的条件控制: ``` if command; then # command 命令返回 0 时执行的代码块 else # command 命令返回非 0 值时执行的代码块 fi ``` - 变量的条件控制: ``` if [ -n "$var" ]; then # 判断变量是否非空 # 变量不为空时执行的代码块 fi ``` if 语句还有一些比较特殊的用法,例如: - 判断文件是否存在: ``` if [ -e file ]; then # -e 表示判断文件是否存在 # 文件存在时执行的代码块 fi ``` - 检查字符串是否包含另一个字符串: ``` if [[ "$str" == *substr* ]]; then # 包含子串时执行的代码块 fi ``` 总之,if 语句是 Linux shell 编程最常用的控制流程的条件语句,掌握好 if 语句的写法和用法,可以让你更加灵活地处理各种情况下的程序逻辑问题,提高编程效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值