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脚本编程笔记(二): 分支结构的更多相关文章

  1. linux shell脚本编程笔记(五): 重定向

    I/O重定向 简述: 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其 ...

  2. linux shell脚本编程笔记(一): 构建基本脚本

    1. echo -n str        打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin ...

  3. linux shell脚本编程笔记(四): 获取字符串长度的七种方法

    获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分 ...

  4. linux shell脚本编程笔记(三): 三种引号的区别

    双引号.单引号.反引号的区别 测试用例: OPDATE=`date -d '-1 day' +%Y%m%d` ) do FILEDATE=`date -d "-$i day" +% ...

  5. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  6. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  7. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  8. Linux Shell脚本编程--Linux特殊符号大全

    Linux Shell脚本编程--Linux特殊符号大全 linux_shell 特殊符号的介绍 2011

  9. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

随机推荐

  1. 【转】无需root Android 4.4现已支持显示电量百分比

    原文网址:http://android.tgbus.com/shouji/news/201311/481145.shtml 现如今,大多数安卓设备.第三方ROM都可以在状态栏以百分比的形式精确显示剩余 ...

  2. Sqlite基础简介

    1.什么是SQLite ? -> SQLite简介 SQLite 是一个进程内的库,是一种轻量级的.自给自足的.无服务器的.无需配置的,事务性的SQL数据库引擎.和他其他的数据库一样,SQLit ...

  3. 解决openoffice进程异常退出的办法:

    实现以守护进程,定时检测openoffice是否退出,如果进程不存在,通过脚本将openoffice起起来即可.   具体操作步骤: 第一步: 将openoffice.sh脚本放置在root目录下面, ...

  4. RK3288 USB触摸屏无法使用,需要添加PID和VID

    RK3288  Android5.1 现象:USB 接口触摸屏插到板子上,触摸屏无法使用,有可能出现更奇葩的,同一套代码,有的板子可以用,有的板子不能用. 1.打开串口调试,插上触摸屏,读取触摸屏的 ...

  5. python的mp3play库试用

    没有见过比这个更小型的库了,下面程序实现的功能:播放音乐,按空格键实现暂停和播放的切换. #coding=utf-8 import mp3play import pythoncom, pyHook i ...

  6. php 操作提示框

    /** * 跳转 * @param type $msg * @param type $url */ protected function jump($msg, $url) { $html = < ...

  7. golang之交叉编译设置

    俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcGOOS=lin ...

  8. FPGA能代替CPU架构吗?

    你还没听过FPGA?那你一定是好久没有更新自己在企业级IT领域的知识了.今天笔者就和大家聊聊何为FPGA?FPGA主要应用场景是什么?有人说FPGA是替代传统CPU和GPU的未来,你信吗? FPGA全 ...

  9. 20165226 2017-2018-4 《Java程序设计》第9周学习总结

    20165226 2017-2018-4 <Java程序设计>第9周学习总结 教材学习内容总结 第十二章 URL类 构造方法1 try { URL url = new URL(" ...

  10. mysql 下字符集知识汇总

    Do not issue the query set names with Connector/J, as the driver will not detect that the character ...