一、基本的控制结构

1、控制流

常见的控制流就是if、then、else语句提供测试条件,测试条件可以基于各种条件。例如创建文件是否成功、是否有读写权限等,凡是执行的操作有失败的可能就可以用控制流,注意控制流的真为0,假为1。

  • 单层if语句

  if 条件;then                            if 条件

    命令                或               then 命令

  fi                                               fi

     if后跟条件,如果条件为真,执行then后面的命令,而then必须放在新行,fi结束控制流,可以理解为endif;我们更推荐第一种写法,这样可以更加增强代码的可读性,使得代码层次更加清晰,下面的例子简单阐述if...else语句。

举例:$ vim simple_if

   #!/bin/sh

   if [ "159" -lt "520" ]; then

     echo "yes, 159 is less then 520"

   fi

  • 输入变量测试

  通过测试设置为接受用户输入的变量可以测知用户是否输入信息,下面的例子中测试用户键入 enter后变量addr的值是否包含任何信息。

  $ vim  iftest2

#!/bin/sh

   echo "Enter your addr:"

    read ADDR

    if [ "$ADDR" = "" ]; then

    echo "you did not enter any information"

    fi

  • grep输出检查

  对grep使用if语句找出grep是否成功返回信息

  #!/bin/sh

  if grep "liming" name.file > /tmp/null 2>&1; then

    echo "liming is in the file"

  else

    echo "no liming is not in the file"

  fi

2、if...else语句

if 条件;then

  命令1

else

  命令2

fi

检查运行脚本的用户,环境变量用作测试条件,即LOGNAME是否包含root值,这类语句是加在脚本开头作为安全性准则的普遍方法,

#!/bin/sh

if [ "$LOGNAME" != "root" ]; then

  echo "you need to be root to run this script" > &2

  exit 1

else

  echo "yes indeed you are $LOGNAME proceed"

fi

最新文章

  1. list去从复
  2. 12.创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。
  3. C#中引用类型和值类型
  4. LInux软件的卸载和安装(转)
  5. URIEncoding和useBodyEncodingForURI详解
  6. HDU-4405 Aeroplane chess(概率DP求期望)
  7. iOS开发--基于AFNetWorking3.0的图片缓存分析
  8. 源自梦想 自定义ViewGroup的整理_1
  9. iOS开发那些事-iOS应用本地化-资源文件本地化
  10. 使用 Spring 2.5 基于注解驱动的 Spring MVC--转
  11. SPOJ--K-query (线段树离线) 离线操作解决一些问题
  12. (转)详解汇编系统调用过程(以printf为例)
  13. Quality Over Quantity: 更少一些,更好一些_第1页_福布斯中文网
  14. Jquery读取URL参数
  15. HUD-5124-lines
  16. 阿里云服务器连接邮箱SMTP服务器time out的解决
  17. 一本通 1223:An Easy Problem
  18. asp:DropDownList 使用
  19. Win10上启动UICrawler自动遍历时报 "org.openqa.selenium.WebDriverException: An unknown server-side error occur red while processing the command. Original error: Could not sign with default certifi cate."
  20. 每天一个linux命令:Linux 目录结构

热门文章

  1. Eclipse导入包
  2. LaTeX中的浮动体
  3. 下载配置VNC
  4. CentOS rsync小结
  5. docker centos容器无法yum
  6. IdentityServer4系列 | 简化模式
  7. PyQt(Python+Qt)学习随笔:MoviePy视频转GIF动图相关方法介绍
  8. Python中序列解包与函数的参数收集之间的关系
  9. 第8.28节 Python中使用__setattr__定义实例变量和实例方法
  10. GPU相关资料汇总