| 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>
 
 |