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

快速上手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

演示:

相关文章:

  • 【评测】DuReader-Retrieval数据集之初体验
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题
  • magic-api配置Git插件教程
  • 安装Arch Linux(实体机、干货)
  • Kubernetes 中部署 kube-state-metrics 及 Prometheus 监控配置实战
  • leetcode0954. 二倍数对数组-medium
  • CCPC shandong 2025 G
  • 双路物理CPU机器上安装Ubuntu并部署KVM以实现系统多开
  • 第二章支线一:影之殿堂 · 阴影与过渡魔法
  • 生成式人工智能:重构软件开发的范式革命与未来生态
  • 数据的类型——认识你的数据
  • Hibernate:Java持久层框架的高效应用
  • DMBOK对比知识点对比(2)
  • 江科大UART串口通讯hal库实现
  • Python reduce()函数详解:累积计算的艺术
  • 王树森推荐系统公开课 特征交叉01:Factorized Machine (FM) 因式分解机
  • N2语法 逆接
  • C++ 中 std::wstring::c_str() 的潜在风险与安全使用指南
  • Java类中各部分内容的加载执行顺序
  • 【Python Cookbook】迭代器与生成器(四)
  • 公众号做电影采集网站会被封/搜索引擎优化概述
  • 生态农庄网站模板/制作网页设计公司
  • 新建一个公司官网/seo学校
  • 青岛网站开发公司电话/网络营销渠道策略
  • 制作公司网站应该考虑什么/如何推广自己产品
  • 驾校网站制作/百度搜索热度