Bash如何遍历CSV文件三列变量循环执行指定命令?
Bash逐行读取CSV执行命令实现方案
你可以直接使用下方脚本实现需求,无需反复调用awk、cat等外部工具读取文件:
#!/bin/bash # 替换为你的CSV文件实际存储路径 csv_file="/path/my_ids.csv" # 逐行读取CSV并拆分字段执行命令 while IFS=, read -r file id1 id2 || [ -n "$file" ]; do command -base "$file" -tp "$id1" -tp "$id2" -all done < "$csv_file"
关键逻辑说明
IFS=,指定行内容分隔符为逗号,匹配CSV的格式规则,read命令会自动将每行内容按逗号拆分后依次赋值给$file、$id1、$id2三个变量|| [ -n "$file" ]用于兼容CSV最后一行没有换行符的场景,避免漏掉最后一行数据- 所有变量外层添加双引号,可避免字段中存在空格、特殊字符时命令执行报错
- 若你的CSV包含表头行需要跳过,可在循环内第一行添加如下判断逻辑:
# 双引号内替换为你实际表头的第一列字段值即可 [ "$file" = "表头第一列内容" ] && continue
内容的提问来源于stack exchange,提问作者Vince Edwards
相关产品推荐
相关产品推荐

