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

如何在Docker中检查文件夹是否存在并编写Bash脚本处理结果

检查Docker容器内指定文件夹是否存在的Bash脚本方案

你的示例脚本存在几个需要修正的问题,以下是优化后的实现方案:

问题修正点

  • 变量赋值时等号不能有空格(原脚本 toto = ...的写法错误)
  • 脚本运行时无需交互式终端,应去掉docker exec的-t参数(-it仅用于交互式场景)
  • 可以直接利用命令的退出状态码判断,比捕获输出更简洁可靠

方案一:利用命令退出状态码(推荐)

# 检查容器symfony内的imports文件夹是否存在
if docker exec symfony sh -c "test -d imports"; then
    echo "文件夹存在"
else
    echo "文件夹不存在"
fi

说明

test -d命令在目标文件夹存在时返回0(成功状态),否则返回非0。docker exec会继承这个退出码,因此可以直接在if条件中判断。


方案二:通过输出结果判断(修正原脚本写法)

# 捕获命令输出,注意赋值符号无空格,去掉-t参数
toto=$(docker exec symfony sh -c "test -d imports && echo '1'")
if [[ "$toto" == '1' ]]; then
    echo "文件夹存在"
else
    echo "文件夹不存在"
fi

说明

  • 用$()捕获命令的标准输出,变量赋值时等号两侧不能有空格
  • 仅当imports文件夹存在时,才会输出1,否则无输出,以此作为判断依据

注意事项

  • 确保目标容器symfony处于运行状态,否则docker exec会执行失败
  • 如果是绝对路径的文件夹,需写全路径(如/var/www/imports),避免相对路径引发的问题
  • 仅在需要交互式操作时才添加-it参数,脚本环境下不建议使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:22