找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 309|回复: 3

SHELL编程必备-If条件语句实战

[复制链接]

22

主题

21

回帖

134

积分

管理员

积分
134
发表于 2024-8-19 18:01:59 | 显示全部楼层 |阅读模式
Linux Shell编程中,if、for、while、case等条件流程控制语句用的非常多,熟练掌握以上流程控制语句及语法的实验,对编写Shel脚本有非常大的益处。

If条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断,主要有如下三种表达式结构:


1)If表达式单表达式如下:
  1. if  (表达式)
  2. 语句1
  3. fi</font>
复制代码

2)If表达式双表达式如下:
  1. if  (表达式)
  2. 语句1
  3. else
  4. 语句2
  5. fi</font>
复制代码

3)If表达式多表达式如下:
  1. if  (表达式x)
  2. 语句1
  3. else
  4. if  (表达式y)
  5. 语句2
  6. else
  7.     语句3
  8. fi
  9. fi</font>
复制代码

4)If语句Shell脚本编程案例如下:
(1)比较两个整数大小。
  1. #!/bin/bash
  2. #By author jfedu.net 2024
  3. NUM=100
  4. if  (( $NUM > 4 )) ;then
  5. echo “The  Num  $NUM  more  than 4.”
  6. else
  7. echo “The  Num  $NUM  less   than 4.”
  8. fi</font>
复制代码

(2)判断系统目录是否存在。
  1. #!/bin/bash
  2. #judge DIR or Files
  3. #By author jfedu.net 2022
  4. if  [  !  -d  /data/20240515  -a  !  -d  /tmp/2024/  ];then
  5. mkdir  -p  /data/20240515
  6. fi</font>
复制代码

5)If常见判断逻辑运算符详解:
  1. -f                                                  判断文件是否存在 eg: if [ -f filename ];
  2. -d                                                 判断目录是否存在 eg: if [ -d dir     ];
  3. -eq                                                等于,应用于整型比较 equal;
  4. -ne                                                不等于,应用于整型比较 not equal;
  5. -lt                                                 小于,应用于整型比较 letter;
  6. -gt                                                大于,应用于整型比较 greater;
  7. -le                                                小于或等于,应用于整型比较;
  8. -ge                                               大于或等于,应用于整型比较;
  9. -a                                                 双方都成立(and) 逻辑表达式 –a 逻辑表达式;
  10. -o                                                 单方成立(or) 逻辑表达式 –o 逻辑表达式;
  11. -z                                                 空字符串;
  12. ||                                                 单方成立;
  13. &&                                               双方都成立表达式。</font>
复制代码

(3)if多个条件测试分数判断。
  1. #!/bin/bash
  2. #By author jfedu.net 2022
  3. scores=$1
  4. if  [[ $scores -eq 100 ]]; then
  5.     echo "very good!";
  6. elif [[ $scores -gt 85 ]]; then
  7.     echo "good!";
  8. elif [[ $scores -gt 60 ]]; then
  9.     echo "pass!";
  10. elif [[ $scores -lt 60 ]]; then
  11.     echo "no pass!"
  12. fi</font>
复制代码


6)Shell编程中,尤其是使用if语句时,经常会使用()、(())、[]、[[]]、{}等括号,如下为几种括号简单区别对比:
  1. (  )
  2. 用于多个命令组、命令替换、初始化数组,多用于SHELL命令组,例如:JF=(jf1 jf2 jf3),其中括号左右不保留空格;
  3. (( ))
  4. 整数扩展、运算符、重定义变量值,算术运算比较,例如:((i++))、((i<=100)),其中括号左右不保留空格;
  5. [ ]
  6. bash内部命令,[ ]与test是等同的,正则字符范围、引用数组元素编号,不支持+-*/数学运算符,逻辑测试使用-a、-o,通常用于字符串比较、整数比较以及数组索引,其中括号左右要保留空格;
  7. [[ ]]
  8. bash程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-*/数学运算符,逻辑测试使用&&、||,通常用于字符串比较、逻辑运算符等,其中括号左右要保留空格;
  9. {}
  10. 主要用于命令集合或者范围,例如mkdir  -p  /data/201{7,8}/,其中括号左右不保留空格。</font>
复制代码


7)Shell编程中,不管是使用变量、编程时,经常会使用$、\、单引号、双引号、反引号等符号,如下为几种符号简单区别对比:

  1. 美元符号$,主要是用于引用SHELL编程中变量,例如定义变量JF=www.jfedu.net,引用值,需要用$JF;
  2. \反斜杠,主要是用于对特定的字符实现转义,保留原有意义,例如echo “\$JF”结果会打印$JF,而不会打印www.jfedu.net;
  3. 单引号 (' ')  ,单引号又称为强引,不具有变量置换的功能,所有的任意字符还原为字面意义,实现屏蔽Shell元字符的功能;
  4. 双引号(" ") ,双引号又称为弱引,具有变量置换的功能,保留$(使用变量前导符), \(转义符), `(反向引号)元字符的功能;
  5. 反向引号(` `),反引号,位于键盘Tab键上面一行的键,用作命令替换(相当于$(...))。</font>
复制代码


22

主题

21

回帖

134

积分

管理员

积分
134
 楼主| 发表于 2024-8-19 18:04:52 | 显示全部楼层

其实我一直觉得楼主的品味不错!呵呵!京峰教育Linux论坛太棒了!

22

主题

21

回帖

134

积分

管理员

积分
134
 楼主| 发表于 2024-8-19 22:50:41 | 显示全部楼层

既然你诚信诚意的推荐了,那我就勉为其难的看看吧!京峰教育Linux论坛不走平凡路。

22

主题

21

回帖

134

积分

管理员

积分
134
 楼主| 发表于 2024-8-20 16:45:02 | 显示全部楼层

楼主,我太崇拜你了!我想我是一天也不能离开京峰教育Linux论坛
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表