if...fi 语句的基本控制语句,它允许Shell有条件作出决定并执行语句。

语法

  1. if [ expression ]
  2. then
  3. Statement(s) to be executed if expression is true
  4. fi

Shell expression求值。如果结果值是true,给定statement被执行。如果 expression 为false ,则没有语句将不会被执行。大部分的时候,会使用比较操作符决策。

关注对括号和表达之间的空间。这个空间是强制性的,否则语法错误。

如果expression 是一个shell命令,那么它会被假定如此,如果它执行后返回0。如果它是一个布尔表达式,那么返回true。

例子:

  1. #!/bin/sh
  2.  
  3. a=10
  4. b=20
  5.  
  6. if [ $a == $b ]
  7. then
  8. echo "a is equal to b"
  9. fi
  10.  
  11. if [ $a != $b ]
  12. then
  13. echo "a is not equal to b"
  14. fi

这将产生以下结果:

  1. a is not equal to b

if...else...fi 语句是控制语句,它允许下一个表格执行语句 Shell 更可控的方式在两个选择之间作出决定。

语法

  1. if [ expression ]
  2. then
  3. Statement(s) to be executed if expression is true
  4. else
  5. Statement(s) to be executed if expression is not true
  6. fi

Shell expression 求值。如果结果值是真实的,给定 statement(s) 被执行。如果表达式为 false,则语句将不会被执行。

例子:

如果我们把上面的例子中,那么它可以用更好的方式使用 if...else 语句如下:

  1. #!/bin/sh
  2.  
  3. a=10
  4. b=20
  5.  
  6. if [ $a == $b ]
  7. then
  8. echo "a is equal to b"
  9. else
  10. echo "a is not equal to b"
  11. fi

这将产生以下结果:

  1. a is not equal to b

if...elif...fi 语句是提前一个级别的控制语句,形式出几个条件,允许 Shell 作出正确的决定。

语法

  1. if [ expression 1 ]
  2. then
  3. Statement(s) to be executed if expression 1 is true
  4. elif [ expression 2 ]
  5. then
  6. Statement(s) to be executed if expression 2 is true
  7. elif [ expression 3 ]
  8. then
  9. Statement(s) to be executed if expression 3 is true
  10. else
  11. Statement(s) to be executed if no expression is true
  12. fi

这段代码没有什么特别的。这仅仅是一个系列,if 语句每一个语句else子句的一部分。下面语句是执行的基础上的真实情况,如果条件不为 ture,则执行else块。

例子:

  1. #!/bin/sh
  2.  
  3. a=10
  4. b=20
  5.  
  6. if [ $a == $b ]
  7. then
  8. echo "a is equal to b"
  9. elif [ $a -gt $b ]
  10. then
  11. echo "a is greater than b"
  12. elif [ $a -lt $b ]
  13. then
  14. echo "a is less than b"
  15. else
  16. echo "None of the condition met"
  17. fi

这将产生以下结果:

  1. a is less than b

可以使用多个if...elif 语句执行多分支。然而,这并不总是最佳的解决方案,尤其是当所有的分支依赖于一个单一的变量的值。

Shell支持 case...esac  语句处理正是这种情况下,它这样做比 if...elif 语句更有效。

语法

case...esac 语句基本语法 是为了给一个表达式计算和几种不同的语句来执行基于表达式的值。

解释器检查每一种情况下对表达式的值,直到找到一个匹配。如果没有匹配,默认情况下会被使用。

  1. case word in
  2. pattern1)
  3. Statement(s) to be executed if pattern1 matches
  4. ;;
  5. pattern2)
  6. Statement(s) to be executed if pattern2 matches
  7. ;;
  8. pattern3)
  9. Statement(s) to be executed if pattern3 matches
  10. ;;
  11. esac

这里的字符串字每个模式进行比较,直到找到一个匹配。执行语句匹配模式。如果没有找到匹配,声明退出的情况下不执行任何动作。

没有最大数量的模式,但最小是一个。

当语句部分执行,命令;; 表明程序流程跳转到结束整个 case 语句。和C编程语言的 break 类似。

例子:

  1. #!/bin/sh
  2.  
  3. FRUIT="kiwi"
  4.  
  5. case "$FRUIT" in
  6. "apple") echo "Apple pie is quite tasty."
  7. ;;
  8. "banana") echo "I like banana nut bread."
  9. ;;
  10. "kiwi") echo "New Zealand is famous for kiwi."
  11. ;;
  12. esac

这将产生以下结果:

  1. New Zealand is famous for kiwi.

case语句是一个很好用的命令行参数如下计算:

  1. #!/bin/sh
  2.  
  3. option="${1}"
  4. case ${option} in
  5. -f) FILE="${2}"
  6. echo "File name is $FILE"
  7. ;;
  8. -d) DIR="${2}"
  9. echo "Dir name is $DIR"
  10. ;;
  11. *)
  12. echo "`basename ${0}`:usage: [-f file] | [-d directory]"
  13. exit 1 # Command to come out of the program with status 1
  14. ;;
  15. esac

下面是一个示例运行这个程序:

  1. $./test.sh
  2. test.sh: usage: [ -f filename ] | [ -d directory ]
  3. $ ./test.sh -f index.htm
  4. $ vi test.sh
  5. $ ./test.sh -f index.htm
  6. File name is index.htm
  7. $ ./test.sh -d unix
  8. Dir name is unix
  9. $
  1.  

Shell记录-Shell脚本基础(三)的更多相关文章

  1. Shell记录-Shell脚本基础(一)

    Shell 注释: 你可以把注释,在你的脚本如下: #!/bin/bash # Author : Zara Ali # Copyright (c) Tutorialsyiibai.com # Scri ...

  2. -Shell 教程 Bash 脚本 基础语法 MD

    目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 S ...

  3. Shell记录-Shell脚本基础(六)

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行. 1.命令格式 watch[参数][命令] ...

  4. Shell记录-Shell脚本基础(五)

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

  5. Shell记录-Shell脚本基础(四)

    while循环,使您能够重复执行一组命令,直到某些条件发生.它通常用于当你需要反复操纵的变量值. 语法 while command do Statement(s) to be executed if ...

  6. Shell记录-Shell脚本基础(二)

    Shell 基本运算符 算术运算符: 运算符 描述 例子 + Addition - Adds values on either side of the operator `expr $a + $b` ...

  7. Shell记录-Shell命令(其他)

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. .命令格式 top [参数] Shell 2.命令功能 显示当前系统正在执行的 ...

  8. Shell记录-Shell命令(find)

    Linux中的find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花 ...

  9. Shell记录-Shell命令(定时任务)

    在Linux系统中, at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron(crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因 ...

随机推荐

  1. Java锁的种类以及辨析

    锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) .这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类 ...

  2. cxDBTreelist一些使用方法

    一.导出EXCEL   TXT   HTML: uses cxTLExportLink; cxExportTLToEXCEL(dm.SaveDialog.FileName,cxDBTreeList1, ...

  3. testNg-build.xml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <proje ...

  4. 面试问题总结二(技术能力-PHP)----Ⅳ

    57.Linux 的基本命令(重点,现在多数服务器都是Linux 系统) 答:arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmid ...

  5. [转帖]awk 入门

    awk其实不仅仅是工具软件,还是一种编程语言.不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了. http://www.ruanyifeng.com/blog/2018/11/awk.ht ...

  6. RHEL/Centos下Sendmail服务器搭建

    目的 Linux下配置Sendmail服务器,并通过客户端验证. 环境 Cento6 局域网(可访问互联网) 内容 配置Sendmail服务器,使得客户端能够通过foxmail或者outlook ex ...

  7. Mysql 错误相关

    有几天没启动本地的 MySQL 了,今天打开小海豚,直接给我弹出了连接失败,这是怎么回事,就直接进入命令行,发现也有问题,输入密码后一闪而过,也没有什么提示信息给我,百度了先,都说是修改 MySQL ...

  8. Shopping Bands Rank & SBR

    Shopping Bands Rank SBR https://www.guiderank.org/index.html Nike Air Zoom Pegasus 34 http://www.shi ...

  9. DBGridEH序号的自动生成

    序号的自动生成1.定义变量  private         maxno:integer;  public        bmodified:boolean;2.写函数  function max(c ...

  10. (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

    如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.Selec ...