shell脚本学习总结08--比较与测试

程序中流程控制是由比较语句和测试语句处理的

算数比较

[ $var -gt 20 ]

[ $var -gt 20 -a $var -lt 50 ]         #使用逻辑与

[ $var -ne 20 -o $var -ne 50 ]       #使用逻辑或

  • -eq: 等于 equal
  • -lt:  小于 less than
  • -gt:  大于 greater then
  • -ge:  大于或等于   greater equal
  • -le:  小于或等于   less equal
  • -ne : 不等于

 字符串比较

使用字符串比较时,最好使用"[[ ]]",采用单中括号时容易产生错误,如下图所示:

要么就加上字符串都加上双引号

[[ $str1 = $str2 ]]            #str1和str2包含的文本是一模一样的

[[ $str1 != $str2 ]]    #str1和str2包含的文本是不一样的

[[ -z $str ]]        #str为空,则返回真。

[[ -n $str ]]        #str有值,not empty

 注意[[]]不能够使用-a或者-o,而应该使用:

[[ $var1 = hello && $var2 = world ]

文件系统相关测试

[ -f filename ]

[ ! -f filename ]      #不存在文件

 参照:Linux命令之乐--test

 

使用逻辑运算符&&和||能够很容易的将多个条件组合起来:

[[ -n $str1 ]] && [[ -z $str2 ]]
[ -f file_name ] || { touch file_name;chmod 644 file_name;} #大括号里面接要执行的命令

 

posted @   头痛不头痛  阅读(208)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩