You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中编写if条件?含空文本文件校验场景

1. 如何在Bash中编写if条件语句?

Bash的if语句核心是条件测试,基本结构如下:

if [ 条件表达式 ]; then
    # 条件成立时执行的命令
elif [ 另一个条件表达式 ]; then
    # 第二个条件成立时执行的命令
else
    # 所有条件都不成立时执行的命令
fi

常见条件类型示例

  • 文件相关测试
    检查文件是否存在:

    if [ -e "/path/to/file" ]; then
        echo "文件存在"
    fi
    

    检查是否为目录:

    if [ -d "/path/to/dir" ]; then
        echo "这是一个目录"
    fi
    
  • 字符串比较
    判断字符串是否相等:

    str1="hello"
    str2="world"
    if [ "$str1" = "$str2" ]; then
        echo "字符串相等"
    else
        echo "字符串不相等"
    fi
    

    判断字符串是否为空:

    if [ -z "$empty_str" ]; then
        echo "字符串为空"
    fi
    
  • 数值比较
    需用-eq(等于)、-gt(大于)等专用运算符,不能直接用==或>:

    num1=10
    num2=20
    if [ "$num1" -lt "$num2" ]; then
        echo "$num1 小于 $num2"
    fi
    
  • 逻辑运算
    用&&(逻辑与)、||(逻辑或)组合条件:

    # 文件存在且可读
    if [ -e "/path/to/file" ] && [ -r "/path/to/file" ]; then
        echo "文件存在且可读"
    fi
    

也可以用双括号(( ))做数值运算,或双方括号[[ ]]支持通配符匹配:

# 匹配以h开头的字符串
if [[ "$str" == h* ]]; then
    echo "字符串以h开头"
fi
2. 如何在Bash脚本中实现:校验文本文件是否为空,若为空则继续执行脚本,否则执行指定命令?

最简洁的方式是用-s测试选项(检查文件存在且非空),脚本示例如下:

#!/bin/bash

FILE="/path/to/your/file.txt"

# 检查文件是否非空
if [ -s "$FILE" ]; then
    # 文件非空时执行指定命令,这里替换为你的实际操作
    echo "文件非空,执行指定命令..."
    cat "$FILE"
else
    # 文件为空或不存在时,继续执行后续脚本逻辑
    echo "文件为空或不存在,继续执行脚本..."
    # 后续命令写在这里
fi

# 脚本后续的其他逻辑
echo "脚本执行到末尾"

补充说明:

如果需要严格区分“文件存在但为空”和“文件不存在”,可以拆分条件:

if [ -f "$FILE" ]; then
    if [ -s "$FILE" ]; then
        echo "文件存在且非空,执行命令"
        # 指定命令
    else
        echo "文件存在但为空,继续执行"
        # 后续逻辑
    fi
else
    echo "文件不存在,继续执行"
    # 后续逻辑
fi

内容的提问来源于stack exchange,提问作者Alex Zarankin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:35:20