当前位置: 首页 > ds >正文

快速上手shell条件测试

一、命令执行结果判定

&& 命令执行后如果没有任何报错时会执行符号后面的动作

|| 在命令执行后如果命令有报错会执行符号后的动作

二、条件判断方法

条件测试语法说明示例
test 测试表达式test命令和 测试表达式 之间至少有一个空格
[ 测试表达式 ]该方法和test命令的用法一样,[]的边界和内容之间至少有一个空格
[[ 测试表达式 ]]

比test和[]更新的语法格式。[[]]的边界和内容之间至少有一个空格。[[]]中可以使用通配符等进行模式匹配

((测试表达式))一般用于if语句里,双小括号两端不需要有空格,测试对象只能是整数

三、判断表达式

1.文件判断表达式

f1 -ef f2                                     f2为f1硬链接则为真

  • 判断文件是否存在

  • 判断文件类型为目录

  • 判断文件是否存在并不为空

  • 判断文件权限

  • 判断文件新旧

  • 判断字符文件

2.字符串测试表达式

常用字符串测试操作说明示例
-n "字符串"若字符串的长度不为0,则为真,即测试表达式成立,n可以理解为no zero

-z "字符串"   若字符串长度为0,则为真,z可理解成zero
"字符串1"="字符串2"若字符串1等于字符串2,则为真,可使用==代替=
"字符串1"!="字符串2"若字符串1不等于字符串2,则为真

四、阶段练习脚本

检测并判断文件类型

#!/bin/bashfile(){[ -f $TXT ] && echo is file || muluinput
}mulu(){[ -d $TXT ] && echo is directory || echo not findinput
}again(){echo Error: Please inputinput
}out(){echo byeexit 0
}input(){read -p "input:" TXT[ "$TXT" = "exit" ] && out[ -z "$TXT" ] &&  again || file
}
input

五、整数测试表达式

在[]以及test中使用的比较符号在(())和[[]]中使用的比较符号说明
-eq==或=相等,全拼为equal
-ne!=不相等,全拼为not equal
-gt>大于,全拼为greater than
-ge>=大于等于,全拼为greater equal
-lt<小于,全拼为less than
-le<=小于等于,全拼为less equal

示例

六、逻辑操作符

not,取反

示例

七、判断综合训练

猜数游戏

#!/bin/bash
SET(){LUCK=$[$RANDOM%10]
}no(){echo "Error:Please input number"GAUSE
}check(){[ "$NUM" -gt "$LUCK" ]  && echo big || recheckGAUSE
}recheck(){[ "$NUM" -eq "$LUCK" ] && win || echo smallGAUSE
}win(){echo "you are right! again?(y/n):"read RESTART[ "$RESTART" = "y" ] && {SETGAUSE} || {echo byeexit 0}
}GAUSE(){read -p "input num between 0-9:" NUM[ -z "$NUM" ] && no(( $NUM > 10 || $NUM < 0 )) && {echo "Error:Please input 0-9"GUESS}check}
SET
GAUSE

演示:

http://www.xdnf.cn/news/9897.html

相关文章:

  • Practice 2025.5.29 —— 二叉树进阶面试题(1)
  • 聊聊 Metasploit 免杀
  • 数字人引领政务新风尚:智能设备助力政务服务
  • OpenCV计算机视觉实战(9)——阈值化技术详解
  • 【仿生系统】qwen的仿生机器人解决方案
  • AI产品风向标:从「工具属性」到「认知引擎」的架构跃迁​
  • 国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航
  • Java 实现下载指定minio目录下的所有内容到远程机器
  • ssm学习笔记(尚硅谷) day1
  • 生成式人工智能:重构软件开发的范式革命与未来生态
  • 预处理,咕咕咕
  • Cesium 展示——获取鼠标移动、点击位置的几种方法
  • 第四章、自平衡控制
  • 【Ubuntu远程桌面】
  • .NET WinForm图像识别二维码/条形码
  • 从零开始的数据结构教程(六) 贪心算法
  • 超声波换能器 换能原理
  • 「卫星百科」“绿色守卫”高分六号
  • MVCC 原理与并发控制实现
  • 【Pandas】pandas DataFrame equals
  • STP配置
  • 基于Java,SpringBoot,Vue,UniAPP医院预约挂号买药就诊病例微信小程序系统设计
  • 代码随想录打卡|Day50 图论(拓扑排序精讲 、dijkstra(朴素版)精讲 )
  • Java中如何枚举正则表达式捕获组的名字
  • RabbitMQ项目实战
  • 【机器学习基础】机器学习入门核心算法:随机森林(Random Forest)
  • 华为OD机试真题——AI面板识别(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 高效开发,升级软件,硬件也要专业
  • 大数据治理体系构建与实践路径
  • MYSQL 使用心得