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

Bash脚本中使用变量路径执行docker cp失败问题求助

解决Bash脚本读取CSV执行docker cp失败的问题

问题分析

脚本执行docker cp报错但手动执行命令正常,核心原因有三点:

  • CSV第一行是表头fileuuid,脚本未跳过,导致第一次循环用无效UUID执行命令
  • 错误设置IFS=',',你的CSV每行单个UUID无逗号分隔,该设置反而干扰行读取逻辑
  • 若CSV是Windows环境生成,行尾会带\r回车符,read读取后UUID包含多余字符,导致容器内路径无效

修正后的脚本

INPUT=FileIdsToRemove.csv
COPYDIR=/var/lib/mayan/document_file_storage
[ ! -f "$INPUT" ] && { echo "\"$INPUT\" file not found"; exit 99; }

# 跳过表头,读取有效UUID行
tail -n +2 "$INPUT" | while read -r fileuuid
do
    # 移除可能存在的Windows回车符
    fileuuid=$(echo "$fileuuid" | tr -d '\r')
    echo "uuid : $fileuuid"
    docker cp "mayan_app_1:/var/lib/mayan/document_file_storage/$fileuuid" ./
done

修改说明

  1. 跳过表头:用tail -n +2直接过滤CSV第一行表头,只处理有效UUID数据
  2. 移除多余IFS设置:恢复默认IFS,确保read正确按行读取内容
  3. 处理回车符:通过tr -d '\r'清除可能的Windows格式回车符,保证UUID字符串纯净
  4. 添加双引号:给文件路径和变量加双引号,避免特殊字符引发的解析问题
  5. read -r参数:防止read对行内特殊字符(如反斜杠)进行转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:35:37