Shell学习笔记 - 分支语句
一、单分支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学习笔记 - 分支语句的更多相关文章
- shell 学习笔记5-shell-if语句
一.if条件语句 1.语法 1)单分支结构 第一种 if <条件表达式> then 指令 fi 第二种 if <条件表达式>:then 指令 fi 上文的"<条 ...
- Shell学习笔记 - 循环语句
一.for循环 1. 语法格式1 for 变量 in 值1 值2 值3 ... do 程序 done 说明:程序将遍历所有的值,赋值给变量,然后在执行程序.也就是说,后面接多少个值,程序就循环多少次. ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- SHELL学习笔记三
SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- shell 学习笔记2-shell-test
一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...
- shell 学习笔记8-case条件语句
一.case语句简介 1.什么是case条件语句 case条件语句就相当于多分支的if/elif/else条件语句,但是比这样的语句更规范更好看,经常被用在失效系统服务启动脚本等企业应用中 程序将ca ...
随机推荐
- 小巧实用js倒计时
<script type="text/javascript"> var intDiff = parseInt(15); //倒计时总秒数量 functi ...
- VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]
在MFC中设置控件的背景色.字体.字体颜色.标题等属性主要是利用OnCtlColor函数来实现. 如: HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, ...
- <创建和销毁对象>经验法则——考虑用静态工厂方法代替公有构造方法
一.引出静态工厂方法 对于java类而言,为了让使用者获取它自身的一个实例化对象,会有以下方法: 1.该类提供一个公有的构造方法.在这种情况下,程序可以通过多个“new 构造方法”语句来创建类的任意多 ...
- mac下xampp简单虚拟主机配置
多域名,虚拟主机的配置 开启虚拟主机配置选项: 打开httpd.conf文件,找到httpd-vhosts.conf那一行,解除该行注释: 打开httpd-vhosts.conf文件 修改如下 < ...
- 批量更改数据库COLLATION
企业内部有很多系统是繁体的,由于各方面的原因,公司目前正在实行简体化,但各系统中又有数据间的交换,所以系统只能一个一个的更改,以防同时出现过多的问题.由于原先数据库只能存储繁体,而原先已存在的数据则可 ...
- C++ Bit Fields
http://msdn.microsoft.com/en-us/library/ewwyfdbe%28v=vs.71%29.aspx Note An unnamed bit field of widt ...
- CentOS 6.5 源码安装MySQL5.6
1:下载安装cmake (mysql5.5以后是通过cmake来编译的) #http://download.csdn.net/detail/csxuedn/7976005 #wget http://w ...
- 读loadBalance技术的一些笔记
以前知道loadbalance的原理,但是仅仅是浅浅的了解过,今天看了一篇 10多年前 一位大神级别人物 写的文章 顿时学习了 http://www.linuxvirtualserver.org/zh ...
- 【M11】禁止异常流出析构方法之外
1.在两种情况下,调用析构方法:a.在正常状态下被销毁,栈上的对象离开作用域或者堆上的对象执行delete:b.抛出异常,堆栈回滚,栈上已经构造好的对象,也就是抛出异常之前的代码,自动调用析构方法.注 ...
- 由实现JavaScript中的Map想到的
项目中要用到JavaScript中的Map数据类型,它不像JDK那样有自带的,怎么办?搜了找到一个不错的(http://darkmasky.iteye.com/blog/454749).用这个可以满足 ...