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

Unix下遍历结构化子目录校验SHA256完整性脚本报错排查

解决SHA256校验脚本的"No such file or directory"错误

错误原因

你遇到的sh: line 8: : No such file or directory错误,本质是脚本中某个变量为空,导致执行了空命令。结合你的目录结构,大概率是遍历逻辑没正确过滤文件、路径拼接出错,或是没处理通配符匹配不到目录的情况。

修复后的校验脚本

#!/bin/bash

# 遍历dirA下所有符合PER+三位整数格式的子目录
for per_dir in dirA/PER[0-9][0-9][0-9]; do
    # 跳过非目录项(避免通配符无匹配时出错)
    [ -d "$per_dir" ] || continue
    # 遍历PER子目录下的随机字符串子目录
    for rand_dir in "$per_dir"/*; do
        [ -d "$rand_dir" ] || continue
        # 遍历随机目录下的所有文件
        for file in "$rand_dir"/*; do
            # 跳过.sha256校验文件本身
            [[ "$file" == *.sha256 ]] && continue
            # 拼接对应的校验文件路径
            checksum_file="$file.sha256"
            # 检查校验文件是否存在
            if [ ! -f "$checksum_file" ]; then
                echo "Integrity of $file is bad: Missing checksum file"
                continue
            fi
            # 执行校验,通过返回值判断结果
            if sha256sum -c --status "$checksum_file"; then
                echo "Integrity of $file is good"
            else
                echo "Integrity of $file is bad"
            fi
        done
    done
done

关键修复点

  • 用PER[0-9][0-9][0-9]精确匹配目标子目录,避免无关目录干扰
  • 每一步都校验目录是否存在,防止通配符无匹配时把表达式当作文件名处理
  • 跳过.sha256文件本身,避免尝试校验校验文件的冗余操作
  • 所有路径变量用双引号包裹,适配含空格或特殊字符的文件名/目录名
  • 使用sha256sum -c --status自动校验,比手动计算校验和更可靠且简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:05:02