Linux中if语句用法总结

Linux中if语句用法总结shell 中的逻辑判断一般用 if 语句 if 语句中通常用 来表示条件测试 可以比较字符串 判断文件是否存等 if else 语句常用基本的语法如下 1 if thenfi 语句建一个测试脚本 test sh 如下 bin basha 1b 2if a b thenecho aandbisequal fiif a 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 ];效果一样。

命令选项 描述
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 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230371.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月2日 下午3:01
下一篇 2026年3月2日 下午3:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号