一、单分支if语句

1. 语法格式

if [ 条件判断式 ]; then
程序
fi 或者 if [ 条件判断式 ]
then
程序
fi 注意:中括号和条件判断式之间必须有空格

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

#!/bin/bash

if [ "$USER" == root ];then
echo "Login User is root"
fi #########或者######### #!/bin/bash if [ "$USER" == root ]
then
echo "Login User is root"
fi

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

#!/bin/bash

test=$(df -h | grep sda1 | awk '{print $5}' | cut -d '%' -f )

if [ $test -ge  ];then
echo "Warning! /dev/sda1 is full!"
fi

二、双分支if语句

1. 语法格式

if [ 条件判断式 ]; then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi 或者 if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi

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

#!/bin/bash

read -p "Please input a file:" file

if [ -f $file ]; then
echo "File: $file exists!"
else
echo "File: $file not exists!"
fi

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

#!/bin/bash

test=$(ps aux | grep httpd | grep -v 'grep' | wc -l)

if [ $test -gt  ]; then
echo "$(date) httpd is running!"
else
echo "$(date) httpd isn't running, will be started!"
/etc/init.d/httpd start
fi

三、多分支if语句

1. 语法格式

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

2. 示例:实现计算器

#!/bin/bash

# 输入数字a,数字b和操作符
read -p "Please input number a:" a
read -p "Please input number b:" b
read -p "Please input operator[+|-|*|/]:" opt # 判断输入内容的正确性
testa=$(echo $a | sed 's/[0-9]//g')
testb=$(echo $a | sed 's/[0-9]//g')
testopt=$(echo $opt | sed 's/[+|\-|*|\/]//g') if [ -n "$testa" -o -n "$testb" -o -n "$testopt" ]; then
echo "input content is error!"
exit
elif [ "$opt" == "+" ]; then
result=$(($a+$b))
elif [ "$opt" == "-" ]; then
result=$(($a-$b))
elif [ "$opt" == "*" ]; then
result=$(($a*$b))
else
result=$(($a/$b))
fi echo "a $opt b = $result"

四、case语句

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

1. 语法格式

case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
.....省略其他分支.....
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

2. 示例:判断用户输入

#!/bin/bash

read -p "Please choose yes/no:" cmd

case $cmd in
"yes")
echo "Your choose is yes!"
;;
"no")
echo "Your choose is no!"
;;
*)
echo "Your choose is error!"
;;
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. Maven配置文件说明

    <projectxmlns="http://maven.apache.org/POM/4.0.0 "       xmlns:xsi="http://www.w3. ...

  2. C++静态成员函数小结 [转]

    类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中 ...

  3. Ext.form.ComboBox 后台取值 动态加载 ext5.0.0

    我用的extjs是5.0.0版本的. 请注意:如果这里没有的combobox相关内容,这里一定有. 开始的时候keyup事件取到的数据就是放不到ComboBox中,放全局变量也不好用.最后大神出手帮忙 ...

  4. (2)html文本格式化 解说

  5. 自行架设DNS的操作步骤及相关说明

    关于什么是DNS及相关的名词及说明,请看 http://www.wdlinux.cn/bbs/viewthread.php?tid=1081&highlight=dns这里,只是说明,在wdd ...

  6. 【转】Android 属性动画(Property Animation) 完全解析 (上)

    http://blog.csdn.net/lmj623565791/article/details/38067475 1.概述 Android提供了几种动画类型:View Animation .Dra ...

  7. 手游产品经理初探(六)粗糙的logo会给产品致命一击

    假设你的游戏产品从logo的设计開始就不注重细节的话,那么你的产品将不会走多远! 我们把图片放大看: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1 ...

  8. Codeforces Gym 100231B Intervals 线段树+二分+贪心

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...

  9. Getting NHibernate to generate a HiLo string ID

    We've got a large system that's loosely bound to its data source (Navision) via Unity - we're gettin ...

  10. 解决win7 64位中 魔方与TortoiseSVN的冲突解决【2014-02-10】

    原文地址:http://www.cnblogs.com/hbbbs/p/3542479.html 现象 启动后弹出SendRpt:Error的提示框,然后变成soap1.2 fault.关闭后,又会自 ...