Shell脚本之if的用法

Shell脚本之if的用法

1、if语句的格式

1) if-elif-else语法格式

bash 复制代码
if [ condition1 ]; then  
    # 执行条件1的代码块  
elif [ condition2 ]; then  
    # 执行条件2的代码块  
else  
    # 执行条件都不满足时的代码块  
fi

2) if-else语法格式

bash 复制代码
if [ condition ]; then  
    # 执行条件的代码块  
else  
    # 执行条件不满足时的代码块  
fi

3) if语法格式

bash 复制代码
if [ condition ]; then  
    # 执行条件的代码块  
fi

2、if语句的conditon介绍

1)字符串比较

复制代码
=:检测两个字符串是否相等,相等返回 true。例如,[ "$a" = "$b" ]。
!=:检测两个字符串是否不相等,不相等返回 true。例如,[ "$a" != "$b" ]。
-z:检测字符串长度是否为0,为0返回 true。例如,[ -z "$a" ]。
-n:检测字符串长度是否不为 0,不为 0 返回 true。例如,[ -n "$a" ]。
":检测字符串是否不为空,不为空返回 true。例如,[ "$a" ]。

2)文件存在性检查

复制代码
-f:检查文件是否存在,存在返回 true。例如,[ -f "file.txt" ]。
-d:检查目录是否存在,存在返回 true。例如,[ -d "dir" ]。
-e:检查文件或目录是否存在,存在返回 true。例如,[ -e "file.txt" ]。

3)数值比较

复制代码
-eq:检查两个数是否相等,相等返回 true。例如,[ $num -eq $anotherNum ]。
-ne:检查两个数是否不相等,不相等返回 true。例如,[ $num -ne $anotherNum ]。
-lt:检查第一个数是否小于第二个数,小于返回 true。例如,[ $num -lt $anotherNum ]。
-gt:检查第一个数是否大于第二个数,大于返回 true。例如,[ $num -gt $anotherNum ]。
-le:检查第一个数是否小于等于第二个数,小于等于返回 true。例如,[ $num -le $anotherNum ]。
-ge:检查第一个数是否大于等于第二个数,大于等于返回 true。例如,[ $num -ge $anotherNum ]。

3、应用举例

1)根据条件执行不同的代码块:if命令允许你根据给定的条件执行不同的代码块。你可以使用比较运算符(如-eq、-ne、-lt、-gt、-le、-ge)和逻辑运算符(如-a、-o、!)来构建条件表达式。根据条件的结果,你可以选择执行特定的代码块。

bash 复制代码
if [ $num -gt 10 ]; then  
    echo "数字大于10"  
elif [ $num -lt 10 ]; then  
    echo "数字小于10"  
else  
    echo "数字等于10"  
fi

2)检查文件或目录是否存在:使用if命令可以检查文件或目录是否存在,然后根据结果执行相应的操作

bash 复制代码
if [ -f "file.txt" ]; then  
    echo "文件存在"  
else  
    echo "文件不存在"  
fi

3)检查两个字符串是否相等:使用if命令可以比较两个字符串是否相等,并根据结果执行相应的操作

bash 复制代码
if [ "$str1" = "$str2" ]; then  
    echo "字符串相等"  
else  
    echo "字符串不相等"  
fi

4)检查变量是否为空:使用if命令可以检查变量是否为空,然后根据结果执行相应的操作

bash 复制代码
if [ -z "$variable" ]; then  
    echo "变量为空"  
else  
    echo "变量不为空"  
fi
相关推荐
---学无止境---21 分钟前
Linux中slab缓存初始化kmem_cache_init函数和定时回收函数的实现
linux
草莓熊Lotso26 分钟前
Linux 进阶指令实操指南:文件查看、时间管理、搜索压缩全场景覆盖(附高频案例)
linux·运维·服务器
Cx330❀26 分钟前
《Linux进阶指令实操指南》:文件查看、时间管理、搜索压缩全覆盖(附高频案例)
linux·运维·服务器
努力努力再努力wz1 小时前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
Small___ming1 小时前
【Linux基础学习】Linux Ubuntu 权限管理:从入门到精通
linux·学习·ubuntu
tan77º1 小时前
【项目】基于多设计模式下的同步&异步日志系统 - 项目介绍与前置知识
linux·c++·设计模式
yalipf2 小时前
忘记密码更改ubuntu18.08的密码--前提是要知道用户名work
linux·运维·ubuntu
怀旧,2 小时前
【Linux系统编程】3. Linux基本指令(下)
linux·开发语言·c++
艾莉丝努力练剑2 小时前
【C++STL :stack && queue (三) 】优先级队列的使用以及底层实现
linux·开发语言·数据结构·c++·stl
web安全工具库3 小时前
Makefile 模式规则精讲:从 %.o: %.c 到静态模式规则的终极自动化
linux·运维·c语言·开发语言·数据库·自动化