Linux Shell编程中,if、for、while、case等条件流程控制语句用的非常多,熟练掌握以上流程控制语句及语法的实验,对编写Shel脚本有非常大的益处。
If条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断,主要有如下三种表达式结构:
1)If表达式单表达式如下:
2)If表达式双表达式如下:
- if (表达式)
- 语句1
- else
- 语句2
- fi</font>
复制代码
3)If表达式多表达式如下:
- if (表达式x)
- 语句1
- else
- if (表达式y)
- 语句2
- else
- 语句3
- fi
- fi</font>
复制代码
4)If语句Shell脚本编程案例如下:
(1)比较两个整数大小。
- #!/bin/bash
- #By author jfedu.net 2024
- NUM=100
- if (( $NUM > 4 )) ;then
- echo “The Num $NUM more than 4.”
- else
- echo “The Num $NUM less than 4.”
- fi</font>
复制代码
(2)判断系统目录是否存在。
- #!/bin/bash
- #judge DIR or Files
- #By author jfedu.net 2022
- if [ ! -d /data/20240515 -a ! -d /tmp/2024/ ];then
- mkdir -p /data/20240515
- fi</font>
复制代码
5)If常见判断逻辑运算符详解:
- -f 判断文件是否存在 eg: if [ -f filename ];
- -d 判断目录是否存在 eg: if [ -d dir ];
- -eq 等于,应用于整型比较 equal;
- -ne 不等于,应用于整型比较 not equal;
- -lt 小于,应用于整型比较 letter;
- -gt 大于,应用于整型比较 greater;
- -le 小于或等于,应用于整型比较;
- -ge 大于或等于,应用于整型比较;
- -a 双方都成立(and) 逻辑表达式 –a 逻辑表达式;
- -o 单方成立(or) 逻辑表达式 –o 逻辑表达式;
- -z 空字符串;
- || 单方成立;
- && 双方都成立表达式。</font>
复制代码
(3)if多个条件测试分数判断。
- #!/bin/bash
- #By author jfedu.net 2022
- scores=$1
- if [[ $scores -eq 100 ]]; then
- echo "very good!";
- elif [[ $scores -gt 85 ]]; then
- echo "good!";
- elif [[ $scores -gt 60 ]]; then
- echo "pass!";
- elif [[ $scores -lt 60 ]]; then
- echo "no pass!"
- fi</font>
复制代码
6)Shell编程中,尤其是使用if语句时,经常会使用()、(())、[]、[[]]、{}等括号,如下为几种括号简单区别对比: - ( )
- 用于多个命令组、命令替换、初始化数组,多用于SHELL命令组,例如:JF=(jf1 jf2 jf3),其中括号左右不保留空格;
- (( ))
- 整数扩展、运算符、重定义变量值,算术运算比较,例如:((i++))、((i<=100)),其中括号左右不保留空格;
- [ ]
- bash内部命令,[ ]与test是等同的,正则字符范围、引用数组元素编号,不支持+-*/数学运算符,逻辑测试使用-a、-o,通常用于字符串比较、整数比较以及数组索引,其中括号左右要保留空格;
- [[ ]]
- bash程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-*/数学运算符,逻辑测试使用&&、||,通常用于字符串比较、逻辑运算符等,其中括号左右要保留空格;
- {}
- 主要用于命令集合或者范围,例如mkdir -p /data/201{7,8}/,其中括号左右不保留空格。</font>
复制代码
7)Shell编程中,不管是使用变量、编程时,经常会使用$、\、单引号、双引号、反引号等符号,如下为几种符号简单区别对比:
- 美元符号$,主要是用于引用SHELL编程中变量,例如定义变量JF=www.jfedu.net,引用值,需要用$JF;
- \反斜杠,主要是用于对特定的字符实现转义,保留原有意义,例如echo “\$JF”结果会打印$JF,而不会打印www.jfedu.net;
- 单引号 (' ') ,单引号又称为强引,不具有变量置换的功能,所有的任意字符还原为字面意义,实现屏蔽Shell元字符的功能;
- 双引号(" ") ,双引号又称为弱引,具有变量置换的功能,保留$(使用变量前导符), \(转义符), `(反向引号)元字符的功能;
- 反向引号(` `),反引号,位于键盘Tab键上面一行的键,用作命令替换(相当于$(...))。</font>
复制代码
|