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

Shell脚本读取CSV文件(跳过表头)输出命令格式异常求助

问题原因

你的脚本存在两个核心错误,直接导致输出异常:

  • 语法错误:done后多了一个无匹配的右大括号},导致脚本重定向逻辑异常,最终多输出一行不完整的命令
  • CSV换行格式问题:你的test.csv是Windows格式文件,行尾为\r\n(CRLF换行),read命令会把行尾的\r(回车符)读取到$role变量末尾。输出时\r会让光标回到行首,后续--to-user $user的内容会覆盖行首已输出的内容,最终出现文本错位的现象。

修复方案

修正后脚本

直接在脚本内处理回车符+删除多余符号即可:

#!/bin/bash
read -r header
while IFS="," read -r user role
do
    # 移除role变量末尾的回车符
    role=${role%$'\r'}
    echo "btp assign security_role-collection $role --to-user $user"
done < test.csv

可选预处理操作

也可以提前将CSV转换为Linux格式换行,避免变量携带回车符:
dos2unix test.csv

修改后执行脚本即可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:27:03