关闭

Linux脚本编程之if判断语句

299人阅读 评论(0) 收藏 举报
分类:

Linux脚本编程中最基本的结构化语句为 if-then语句,if-then语句的格式如下:

if command
then
   commands
fi

执行过程为:首先运行在if行定义的命令,如果命令的退出码是0(成功执行命令)
,则将执行 then后面的命令,如果退出码不为0,then后的命令将不会执行,
例如:

$ cat test01                 
#!/bin/bash
#测试一个正常的命令
if date
then 
echo "date worked"
fi
$ ./test01
2017年 01月 03日 星期二 08:31:30 CST
date worked
下面是一个反面例子:

$ cat test02
#!/bin/bash
#测试一个不存在的命令
if asasaas
then 
    echo "the command doesn't work "
fi
echo "this is outside if statement"
$ ./test02
./test.sh:行3: asasaas: 未找到命令
this is outside if statement
注意:命令出错时的错误信息也会显示在屏幕上,可以使用重定向将其定位到其它地方。
用惯其它编程语言的同学会觉得 shell编程的if语句有点别扭,可以使用下面这种写法来治疗一下强迫症:

if command;then
    commands
fi
分支判断语句还有下面两种形式:

if command
then 
    commands
else
    commands1
fi
===================此为分隔线===========================
if   command1
then 
    commands1
elif command2
then 
    commands2
elif command3
then 
    commands3
else 
    commands4
fi

上面介绍的if语句判断的都是shell命令的退出码,很多时候我们需要判断其它
条件,如数字比较,字符串比较等,在bash shell中可以使用test命令判断其它条件。
test 命令有两种写法:

1.第一种写法
if test condition
then 
   commands
fi
===============此为分隔线================================
2.第二种写法

if [ condition ]
then 
   commands
fi 
使用第二种写法时一定要注意:前半个括号后面和后半个括号前面必须加个空格,否则会报错。
test命令可以判断以下3种条件:
a.数值比较
n1 -eq n2  检查n1是否相等n2                 n1 -le n2    检查n1是否小于或相等n2
n1 -ge n2  检查n1是否大于或等于n2     n1 -lt n2     检查n1是否小于n2
n1 -gt n2  检查n1是否大于n2                  n1 -ne n2   检查n1是否不相等n2

b.字符串比较

str1 = str2    检查str1与str2是否相同           str1 > str2  检查str1是否大于str2
str1! = str2   检查str1与str2是否不同           -n str1        检查str1长度是否大于0
str1 < str2    检查str1是否小于str2               -z str1        检查str1长度是否为0

需要注意的一点是:这里的 '>'和'<'需要转义 前面加个'\',例如

$ cat test03
#!/bin/bash
val1=hello
val2=hi
if [ $val1 \> $val2 ]
then 
    echo "$val1 > $val2"
else
    echo "$val1 < $val2"
fi
$ ./test04
hello < hi
c.文件比较

-d   file                 检查file是否存在并且是一个目录
-e   file                 检查是否存在 
-f    file                 检查file是否存在并且是一个文件
-r    file                 检查file是否存在并且可读
-s   file                 检查file是否存在并且不为空
-w  file                 检查file是否存在并且可写
-x   file                 检查file是否存在并且可执行
-O  file                 检查file是否存在并且被当前用户拥有
-G  file                 检查file是否存在并且默认组是否为当前用户组
file1 -nt file2      检查file1是否比file2新
file1 -ot file2      检查file1是否比file2旧

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

linux之基础shell脚本编程2 if语句循环判断

本章命令:if case while for unit break continue 4.4.4 组合测试 第一种方式  COMMAND1 && COMMAND2 并且 ...
  • ly1358152944
  • ly1358152944
  • 2016-08-24 19:52
  • 2228

Linux shell脚本之 if条件判断

bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令。当有多个嵌套时,只有第一个返回0退出状态的命令...
  • doiido
  • doiido
  • 2015-02-27 13:34
  • 3831

Linux shell脚本——if运算例子

下面以具体例子来描述shell脚本中if语句的使用 #!/bin/sh #define a variable,定义一个变量,此处等号两边不能有空格 v="test shell commond...
  • shandong_chu
  • shandong_chu
  • 2013-03-04 14:55
  • 13282

Linux shell脚本编程if语句的使用方法(条件判断)

Linux shell脚本编程if语句的使用方法,大家参考使用吧 if 语句格式 if  条件 then  Command else  Command fi        别忘了这个...
  • u012443816
  • u012443816
  • 2013-12-07 08:04
  • 530

shell脚本编程之for语句、if语句使用介绍

上部: 面向过程: 顺序执行 选择执行: if, case 循环执行: for, while, until 一、for语句   格式:      for 变量 in 列表;d...
  • nvsong
  • nvsong
  • 2017-12-25 12:21
  • 18

Linux shell脚本编程入门(二) 循环语句

前面有了变量的概念和逻辑运算符,就可以写判断语句了,不过这里注意中括号的两边必须得留空格,不然报错. 运算符 赋值, 用 let 语句, 如 let "a=1"算数运算, 支持 +  -  *  /...
  • zhangxb35
  • zhangxb35
  • 2015-01-04 22:02
  • 823

shell脚本编程中条件判断语句中各个参数的含义

Linux下条件判断语句的格式如下:
  • xygl2009
  • xygl2009
  • 2014-09-09 22:14
  • 587

linux shell编程if语句内判断参数详解

  • 2012-10-31 14:19
  • 16KB
  • 下载

linux脚本编程之条件判断

最近在慕课网学习,慕课网的教程很不错,顺便做了一些笔记,现在拿来跟大家分享。 1.shell编程之条件判断 1.1.条件判断 两种判断格式的写法: test -e /root/install....
  • libing403
  • libing403
  • 2016-04-14 23:49
  • 462

shell 脚本编程之循环语句

break 和 continue 的意义和 c 语言一样,break 用于结束整个循环,continue 用于跳过本次循环。但 shell 的 break 和 continue 有一个很强大的地方就是...
  • xingxinmanong
  • xingxinmanong
  • 2017-08-04 10:11
  • 123
    个人资料
    • 访问:30497次
    • 积分:1001
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:19篇
    • 译文:0篇
    • 评论:0条