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,把监控结果保存 ...
随机推荐
- caddy server 默认https && http2的验证
1. 下载 https://caddyserver.com/ 注意选择应该包含的模块,此次包含了git 插件 2. 配置 使用 Caddyfile 内容如下: ro ...
- smarty核心思想 自制模板引擎
<?php $tit = '今天下雨了,淋了半条街'; function tit($file){ //读文件 $h = file_get_contents($file); $h = str_re ...
- java的try-with-resource机制
在java7之后可以使用try(resource1, resource2){...}这样声明之后,在try{}执行完成之后或者抛异常跳出,都会调用reouce1.close(),resource2.c ...
- java指定文件编码格式
在创建文件并打印字符串时,如果不指定编码,默认是按系统的编码格式来.比如我们的linux环境中编码如下: CMREAD-SV43 /home/wlf> locale LANG=en_US.UTF ...
- Codeforces Round #205 (Div. 2)C 选取数列可以选择的数使总数最大——dp
http://codeforces.com/contest/353/problem/C Codeforces Round #205 (Div. 2)C #include<stdio.h> ...
- opencv Mat中某点的值
Mat mat = imread("baby.jpg"); Mat p = mat.col().row(); uchar* ptr = (uchar*) p.data; ]; ]; ...
- 结合示例说明C++中const和指针结合时怎么理解
在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现 ...
- TCP/IP网络编程系列之四(初级)
TCP/IP网络编程系列之四-基于TCP的服务端/客户端 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流的 ...
- python 变量 不断 相加 or 相减的简便写法 a +=1
相加: 相减:
- Java-Runoob-高级教程:Java Applet 基础
ylbtech-Java-Runoob-高级教程:Java Applet 基础 1.返回顶部 1. Java Applet 基础 Applet 是一种 Java 程序.它一般运行在支持 Java 的 ...