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

Bash脚本开发:检查多目录存在性并按需输出指定内容

修正Bash脚本:逐个检查目录及文件存在性

嘿,你的原始脚本逻辑确实有不少问题——它把所有目录的存在性判断放在了最前面,而且文件检查也没有针对每个单独的目录,这就导致要么全输出目录名,要么全输出"no directory exists",完全不符合你“逐个目录检查,对应输出或显示missing”的需求。

我帮你重新写了脚本,完全贴合你的需求:

#!/bin/bash

# 定义要检查的文件和目录基础路径
target_file="file.txt"
base_dir="/folders"  # 若目录是相对路径可改成"./folders"或其他实际路径

# 遍历folder1到folder11
for dir_name in folder{1..11}; do
    # 拼接完整的目录路径
    full_dir="${base_dir}/${dir_name}"
    # 拼接目录下目标文件的完整路径
    full_file="${full_dir}/${target_file}"
    
    # 检查目录是否存在,且目录下的目标文件也存在
    if [[ -d "${full_dir}" && -f "${full_file}" ]]; then
        # 符合条件,输出目录名并调用你的函数
        echo "${dir_name}"
        # 替换成你的实际函数调用,比如:your_custom_function
    else
        # 目录不存在,或目录存在但文件缺失,输出missing
        echo "${dir_name}: missing"
    fi
done

关键修正点说明:

  • 逐个遍历处理:不再提前批量判断所有目录,而是循环每个目录单独检查,完美匹配你“每个目录对应输出一行”的要求
  • 精准的路径拼接:把基础目录和目录名拼接成完整路径,避免路径错误导致的判断失误
  • 更严谨的存在性判断:用-d确保是有效目录,用-f确保是普通文件(比-e更精准,-e会匹配链接、设备文件等非普通文件的条目)
  • 直观的错误提示:输出目录名: missing能让你清楚知道哪个目录出了问题,如果你只需要纯"missing",把else分支改成echo "missing"即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:52