linux shell脚本编程笔记(二): 分支结构
1.if
if command
then
commands
fi
if command
then
commands
else
commands
fi
if command1
then
command set
elif command2
then
command set
elif command3
then
command set
fi
2.test: 用于if条件中
if test condition
then
commands
fi
if [condition]
then
commands
fi
test有三种比较场景:数值比较、字符串比较、文件比较。
1>: 数值比较

eg:

不过有个陷阱,关于浮点数的,看下面:

test命令不能处理浮点数。
2>: 字符串比较

eg:

比较字符串大小时,需要注意:

第一条是因为,大于小于号与重定向符号冲突;第二条,看下面:

另外,

还有两个参数:-n(判不空) -z (判空)
eg:

绝对避免在shell脚本里使用未知是否存在或空的变量,-n/z可判变量是否未空或未定义。
3>: 文件比较

eg:

4>: 复合条件测试

eg:

5>:备注
test语句用中括号时候,中括号本身两边得有空格与其他数据隔开。中括号前面加非(!),即表示取非操作,但是,叹号也要与中括号用空格隔开。
3.if then高级特性

1>: 使用双尖括号

前面提到数值比较,需要转义大于小于号,且支持的符号很有限。而双尖括号,则不仅不需要转义符号,且拓展更多的符号使用。

eg:

双尖括号不仅可以用在if条件里,也可以用在普通命令里用来赋值。
2>: 使用双方括号

双方括号,支持模式匹配。
eg:

4.case
类似于c语言里的switch。

其中,|代表或,*代表default(前面case都不成立时,进入*)
eg:

linux shell脚本编程笔记(二): 分支结构的更多相关文章
- linux shell脚本编程笔记(五): 重定向
I/O重定向 简述: 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其 ...
- linux shell脚本编程笔记(一): 构建基本脚本
1. echo -n str 打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin ...
- linux shell脚本编程笔记(四): 获取字符串长度的七种方法
获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分 ...
- linux shell脚本编程笔记(三): 三种引号的区别
双引号.单引号.反引号的区别 测试用例: OPDATE=`date -d '-1 day' +%Y%m%d` ) do FILEDATE=`date -d "-$i day" +% ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux Shell脚本编程--Linux特殊符号大全
Linux Shell脚本编程--Linux特殊符号大全 linux_shell 特殊符号的介绍 2011
- Linux Shell脚本编程while语句
Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo uptime sleep 3done 2,把监控结果保存 ...
随机推荐
- 【转】无需root Android 4.4现已支持显示电量百分比
原文网址:http://android.tgbus.com/shouji/news/201311/481145.shtml 现如今,大多数安卓设备.第三方ROM都可以在状态栏以百分比的形式精确显示剩余 ...
- Sqlite基础简介
1.什么是SQLite ? -> SQLite简介 SQLite 是一个进程内的库,是一种轻量级的.自给自足的.无服务器的.无需配置的,事务性的SQL数据库引擎.和他其他的数据库一样,SQLit ...
- 解决openoffice进程异常退出的办法:
实现以守护进程,定时检测openoffice是否退出,如果进程不存在,通过脚本将openoffice起起来即可. 具体操作步骤: 第一步: 将openoffice.sh脚本放置在root目录下面, ...
- RK3288 USB触摸屏无法使用,需要添加PID和VID
RK3288 Android5.1 现象:USB 接口触摸屏插到板子上,触摸屏无法使用,有可能出现更奇葩的,同一套代码,有的板子可以用,有的板子不能用. 1.打开串口调试,插上触摸屏,读取触摸屏的 ...
- python的mp3play库试用
没有见过比这个更小型的库了,下面程序实现的功能:播放音乐,按空格键实现暂停和播放的切换. #coding=utf-8 import mp3play import pythoncom, pyHook i ...
- php 操作提示框
/** * 跳转 * @param type $msg * @param type $url */ protected function jump($msg, $url) { $html = < ...
- golang之交叉编译设置
俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcGOOS=lin ...
- FPGA能代替CPU架构吗?
你还没听过FPGA?那你一定是好久没有更新自己在企业级IT领域的知识了.今天笔者就和大家聊聊何为FPGA?FPGA主要应用场景是什么?有人说FPGA是替代传统CPU和GPU的未来,你信吗? FPGA全 ...
- 20165226 2017-2018-4 《Java程序设计》第9周学习总结
20165226 2017-2018-4 <Java程序设计>第9周学习总结 教材学习内容总结 第十二章 URL类 构造方法1 try { URL url = new URL(" ...
- mysql 下字符集知识汇总
Do not issue the query set names with Connector/J, as the driver will not detect that the character ...