一、单分支if语句

1. 语法格式

  1. if [ 条件判断式 ]; then
  2. 程序
  3. fi
  4.  
  5. 或者
  6.  
  7. if [ 条件判断式 ]
  8. then
  9. 程序
  10. fi
  11.  
  12. 注意:中括号和条件判断式之间必须有空格

2. 示例1:判断登陆的用户是否是root

  1. #!/bin/bash
  2.  
  3. if [ "$USER" == root ];then
  4. echo "Login User is root"
  5. fi
  6.  
  7. #########或者#########
  8.  
  9. #!/bin/bash
  10.  
  11. if [ "$USER" == root ]
  12. then
  13. echo "Login User is root"
  14. fi

3. 示例2:判断分区使用率

  1. #!/bin/bash
  2.  
  3. test=$(df -h | grep sda1 | awk '{print $5}' | cut -d '%' -f )
  4.  
  5. if [ $test -ge ];then
  6. echo "Warning! /dev/sda1 is full!"
  7. fi

二、双分支if语句

1. 语法格式

  1. if [ 条件判断式 ]; then
  2. 条件成立时,执行的程序
  3. else
  4. 条件不成立时,执行的程序
  5. fi
  6.  
  7. 或者
  8.  
  9. if [ 条件判断式 ]
  10. then
  11. 条件成立时,执行的程序
  12. else
  13. 条件不成立时,执行的程序
  14. fi

2.  示例1:输入一个文件,判断是否存在

  1. #!/bin/bash
  2.  
  3. read -p "Please input a file:" file
  4.  
  5. if [ -f $file ]; then
  6. echo "File: $file exists!"
  7. else
  8. echo "File: $file not exists!"
  9. fi

3. 示例2:判断apache服务是否启动了,如果没有启动,就代码启动

  1. #!/bin/bash
  2.  
  3. test=$(ps aux | grep httpd | grep -v 'grep' | wc -l)
  4.  
  5. if [ $test -gt ]; then
  6. echo "$(date) httpd is running!"
  7. else
  8. echo "$(date) httpd isn't running, will be started!"
  9. /etc/init.d/httpd start
  10. fi

三、多分支if语句

1. 语法格式

  1. if [ 条件判断式1 ]; then
  2. 当条件判断式1成立时,执行程序1
  3. elif [ 条件判断式2 ]; then
  4. 当条件判断式2成立时,执行程序2
  5. .....省略更多条件.....
  6. else
  7. 当所有条件都不成立时,最后执行此程序
  8. fi

2. 示例:实现计算器

  1. #!/bin/bash
  2.  
  3. # 输入数字a,数字b和操作符
  4. read -p "Please input number a:" a
  5. read -p "Please input number b:" b
  6. read -p "Please input operator[+|-|*|/]:" opt
  7.  
  8. # 判断输入内容的正确性
  9. testa=$(echo $a | sed 's/[0-9]//g')
  10. testb=$(echo $a | sed 's/[0-9]//g')
  11. testopt=$(echo $opt | sed 's/[+|\-|*|\/]//g')
  12.  
  13. if [ -n "$testa" -o -n "$testb" -o -n "$testopt" ]; then
  14. echo "input content is error!"
  15. exit
  16. elif [ "$opt" == "+" ]; then
  17. result=$(($a+$b))
  18. elif [ "$opt" == "-" ]; then
  19. result=$(($a-$b))
  20. elif [ "$opt" == "*" ]; then
  21. result=$(($a*$b))
  22. else
  23. result=$(($a/$b))
  24. fi
  25.  
  26. echo "a $opt b = $result"

四、case语句

case语句和if...elif...else语句都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。

1. 语法格式

  1. case $变量名 in
  2. "值1")
  3. 如果变量的值等于值1,则执行程序1
  4. ;;
  5. "值2")
  6. 如果变量的值等于值2,则执行程序2
  7. ;;
  8. .....省略其他分支.....
  9. *)
  10. 如果变量的值都不是以上的值,则执行此程序
  11. ;;
  12. esac

2. 示例:判断用户输入

  1. #!/bin/bash
  2.  
  3. read -p "Please choose yes/no:" cmd
  4.  
  5. case $cmd in
  6. "yes")
  7. echo "Your choose is yes!"
  8. ;;
  9. "no")
  10. echo "Your choose is no!"
  11. ;;
  12. *)
  13. echo "Your choose is error!"
  14. ;;
  15. esac

Shell学习笔记 - 分支语句的更多相关文章

  1. shell 学习笔记5-shell-if语句

    一.if条件语句 1.语法 1)单分支结构 第一种 if <条件表达式> then 指令 fi 第二种 if <条件表达式>:then 指令 fi 上文的"<条 ...

  2. Shell学习笔记 - 循环语句

    一.for循环 1. 语法格式1 for 变量 in 值1 值2 值3 ... do 程序 done 说明:程序将遍历所有的值,赋值给变量,然后在执行程序.也就是说,后面接多少个值,程序就循环多少次. ...

  3. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  4. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  5. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  6. SHELL学习笔记三

    SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...

  7. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  8. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

  9. shell 学习笔记8-case条件语句

    一.case语句简介 1.什么是case条件语句 case条件语句就相当于多分支的if/elif/else条件语句,但是比这样的语句更规范更好看,经常被用在失效系统服务启动脚本等企业应用中 程序将ca ...

随机推荐

  1. StringBuffer与StringBuilder的异同

    一. 相同之处        1.均是可变字符序列,可以随机的改变字符串,如追加操作或插入操作 2. 均使用了内部缓冲区,并且当内部缓冲区溢出后均会自动增大 二. 不同之处       1. Stri ...

  2. Windows操作系统单文件夹下到底能存放多少文件及单文件的最大容量

    本文是转自:http://hi.baidu.com/aqgjoypubihoqxr/item/c896921f8c2eaba5feded5f2         最近需要了解Windows中单个文件夹下 ...

  3. [转][IIS]发布网站,提示用户 'IIS APPPOOL\***' 登录失败。

    链接:http://www.cnblogs.com/tianguook/p/3881075.html 用户 'IIS APPPOOL\DefaultAppPool' 登录失败. 我在windows8中 ...

  4. Ehcache(06)——监听器

    http://haohaoxuexi.iteye.com/blog/2119353 监听器 Ehcache中监听器有两种,监听CacheManager的CacheManagerEventListene ...

  5. call()和apply()方法

    还在处在刚刚学习JavaScript的初级阶段,所以理解相对浅显,是一种简单的模式理解.这里做一个笔记,让自己在回顾的时候,更加牢记. call()和apply()的形式 A.call(B," ...

  6. WinForm设置窗体默认控件焦点

    winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种方法: ①设置tabindex 把该文本框属性里的tabIndex设为0,焦点就默认在这个文本框里了. ②Winfor ...

  7. 利用css中的border生成三角,兼容包括IE6的主流浏览器

    1.生成四个不同颜色方向的梯形 #ladder{ width:20px; height:20px; border:10px solid; border-color:#ff3300 #0000ff #3 ...

  8. jQuery:在一个回调中处理多个请求

    我曾经为Mozilla Developer Network 开发一个新功能,它需要加载一个基本的脚本文件的同时加载一个JSON请求.因为我们使用的是jQuery,意味着要使用 jQuery.getSc ...

  9. Class hierarchy of UIResponder as well as subclasses of UIView and UIControl

    When you were dragging in your label and your button to this view, you were adding them as subviews. ...

  10. Android 获取控件相对于屏幕位置

    // View宽,高 public int[] getLocation(View v) { int[] loc = new int[4]; int[] location = new int[2]; v ...