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

如何根据数据集变量值命名文件?Bash脚本实现问题求助

原脚本存在的问题
  • 没有对逐行读取的内容做列拆分,$column1/$column2/$column3/$column4均为未定义的空变量,开头定义的file1/file2也完全无效
  • 创建目录没有加-p参数,不仅会在目录已存在时报错,也无法直接创建多级嵌套目录
  • 完全没有实现「将第2列内容写入第1列命名的文件、存放到第3列目录下」的核心逻辑,仅打印了整行内容
  • 没有对变量加引号,若列值包含空格等特殊字符时会执行报错
修正后的脚本

首先确认你的list.csv的列分隔符:
如果是空格/制表符分隔的列表,使用以下脚本:

#!/bin/bash
while read -r column1 column2 column3 column4 leftover
do
    # 一次性创建两级目录,已存在也不会报错
    mkdir -p "${column3}/${column4}"
    # 将第二列内容写入对应文件
    echo "${column2}" > "${column3}/${column1}"
done < list.csv

如果是逗号分隔的标准CSV,修改IFS指定分隔符即可:

#!/bin/bash
while IFS=, read -r column1 column2 column3 column4 leftover
do
    mkdir -p "${column3}/${column4}"
    echo "${column2}" > "${column3}/${column1}"
done < list.csv

注:变量后的leftover用于承接行内超过4列的冗余内容,避免列数超出时内容错位。如果你的文件严格只有4列可以删掉这个参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:03