一、前言

结构化编程中,主要有三种结构:顺序、分支、循环。由此可见分支判断的重要性。

而且在shell编程中往往会遇到进行判断的情况,比如:判断文件是否存在、目录是否存在等等。

二、if语句的结构

if [ 条件 ];
then
...
elif [ 条件 ];
then
...
else
...
fi

三、shell中的分支判断

shell中的判断有以下几种:

1.字符串判断

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

2.数字判断

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

3.文件判断

-r file 文件可读为真
-w file 文件可写为真
-x file 文件可执行为真
-f file 文件为普通文件为真
-d file 文件为目录文件为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件为链接文件为真
-t file 当文件描述符指定的设备为终端时为真

4.组合

-a 与
-o 或
! 非

5.注意

今天写了个脚本,运行的时候一直出错:

if [[ $ = 'DEBUG' ]]; then
CMD="make clean;make COMFLAG='-D__LINUX__ ' DEBUGFLAG='-g'"
elif [[ $ = 'RELEASE' ]]; then
CMD="make clean;make COMFLAG='-D__LINUX__ '"
else
echo "Error parameter!"
exit
fi

当条件处使用的是: if [ $ = 'DEBUG' ] 时,不加参数直接运行总是报错:unary operator expected

原因是当没有参数时,该行变为: if [ = 'DEBUG' ] 那么按照语法来说,'['和'DEBUG'是肯定不相等的,这样前面就少了一个'[',所以报错了。

shell脚本之if语句的更多相关文章

  1. shell 脚本之判断语句 if 详解

    使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...

  2. shell脚本-循环选择语句

    shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...

  3. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

  4. shell脚本之循环语句与函数

    shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...

  5. shell脚本的if语句,判断某程序是否存在,不存在启动该程序!

    想必大家都知道 "如果......那么......" 这种语法的应用吧! 当然呢,linux下对于这种用法也是有所考虑的,很多时候我们都需要写一个shell脚本,难免会避免if语句 ...

  6. 《linux就该这么学》第五节课,shell脚本的各种语句!

    第四章shell语句 (据课本和虚拟机实验排版,借鉴请改动)               4.2:shell脚本   脚本包括:脚本声明,脚本注释,脚本内容和命令 例:#!/bin/bash      ...

  7. shell脚本、if语句、for循环语句

    shell在shell脚本中,如果用户不输入东西,系统不自动退出,this is a bug!文件测试语句:-d -f -r -w -x -e逻辑测试语句:“&&”与(同时满足) “| ...

  8. shell脚本if判断语句报错[: too many arguments的两种原因

    shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...

  9. Linux Shell脚本编程while语句案例

    1,每隔3秒,打印一次系统负载 #!/bin/bash while true do uptime done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化 ghostwu@de ...

随机推荐

  1. Swift实战-豆瓣电台(六)视图跳转,传参及回跳

    youku观看地址:http://v.youku.com/v_show/id_XNzMxMzQ3MDcy.html 要点 在ChannelController里面声明一个代理 这个代理遵循我们自定义的 ...

  2. zabbix监控企业esxi虚拟机

    zabbix监控企业esxi虚拟机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我来公司有一段时间了,最近也发现模型部有测试和开发反应某台机器登陆不上去了,结果登陆esxi服务器 ...

  3. java中的断言

     断言:也就是所谓的assertion,是jdk1.4后加入的新功能. 它主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出. 当软件 ...

  4. centos dhcp网络设置

    CentOS 网络设置修改   一.CentOS 修改IP地址 修改对应网卡的IP地址的配置文件# vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改以下内 ...

  5. CSS_01_css和html的结合1、2

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 夺命雷公狗---DEDECMS----2快速入门之玩转dede四大表之间的关系

    比如一个小说网站,网站里面有很多类型让我们的小说网他里面有很多种分类,如: 玄幻....奇幻....仙侠....武侠....文学....异界....都市....军事....历史....灵异....悬疑 ...

  7. 技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流(一)[转]

    我一直在思考软件公司如何开源节流.当然,老板也在思考开源节流.当然,老板思考的开源节流在公司运营层面上,而我作为CTO,我考虑的则是在产品运营角度上来思考这个问题.否则,一个软件公司,它的生存与发展就 ...

  8. sp_addlinkedserver 方法应用

    EXEC  sp_addlinkedserver      @server='DBVIP',--被访问的服务器别名       @srvproduct='',      @provider='SQLO ...

  9. fedora环境安装webkit支持作爬虫下载解析JS

    环境: 我使用的fedora19.1-xfce版本,属于redhat系的桌面环境. 1.安装 webkit源码安装webkit失败,这里提供的是yum安装方式. a.查看当前yum库中的webkit资 ...

  10. WebService优点和缺点小结(转)

      一.什么是WebService? 实际上,WebService的主要目标是跨平台的可互操作性.为了达到这一目标,WebService完全基于XML(可扩展标记语言).XSD (XMLSchema) ...