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

Shell脚本中如何正确对比指定格式的文件名,解决执行报错问题

报错原因

  • Shell 变量赋值时等号两侧不允许有空格,你写的file1 = "xxx"会被系统识别为尝试执行名为file1的命令,而非变量赋值。
  • [是Shell的内置命令而非语法符号,命令和参数之间必须有空格分隔,你写的[$file1 == $file2]会把[和变量值拼接为一个整体字符串,系统会尝试执行这个不存在的命令,触发你遇到的报错。
  • 未用双引号包裹变量属于隐形风险,如果文件名包含空格、通配符等特殊字符时会出现解析错误。

正确的文件名对比写法

兼容所有POSIX标准Shell的通用写法

# 变量赋值等号两侧不能有空格
file1="my_random_forest_2021-08-11-094538.csv.zip"
file2="my_random_forest_2021-08-11-094538.csv.zip"

# [ 后和 ] 前必须加空格,变量用双引号包裹,用=做字符串对比兼容性更强
if [ "$file1" = "$file2" ]; then
    echo "matched"
fi

Bash/Zsh等扩展Shell的简化写法

如果你确定脚本运行环境是Bash、Zsh这类支持扩展语法的Shell,可以用双层中括号写法,容错性更高,不需要刻意用双引号包裹变量:

file1="my_random_forest_2021-08-11-094538.csv.zip"
file2="my_random_forest_2021-08-11-094538.csv.zip"

if [[ $file1 == $file2 ]]; then
    echo "matched"
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:21:02