微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从逗号分隔的文件中读取值并使用 shell 脚本在循环中传递值

如何解决从逗号分隔的文件中读取值并使用 shell 脚本在循环中传递值

我有一个包含逗号分隔值的配置文件,如下所示。

jobA,table1,table2,table3
jobB,table4,table5,table6,table7
jobC,table8,table9

现在我想读取第 1 行的第一列,即一个变量中的 $1(jobA) 以及单独变量中相应作业的所有表 (table1,table3) 作为列表,并在循环中迭代此列表。类似的事情应该一直持续到文件结束,即 jobN ..我尝试了下面的代码但没有奏效。我是新手,任何建议都会非常有帮助。

#!/bin/bash
JOBS=$(awk -f\,'(print $1}' a.config)
declare -p JOBS
for jobs in "${List[@]}"
  do
    if [[somecondition]];then
    else
    fi
    TABLES=$(awk -f\,'{for(i=2;i<=NF;++i)print $i}' a.config)
    declare -p TABLES
    for tables in ${list[@]}
      do
        if [[somecondition]];then
        else
        fi
    done 
done
exit 0;

解决方法

while read line; do
    job_name=$(echo "$line"|awk 'BEGIN{FS=","}{print $1}')
    echo "JobName is $job_name"
    # remove the jobname from the string
    tablestring=${line#"$job_name"}
    # Iterate over the remaining string
    for table in ${tablestring//,/ }; do
        echo $table
    done
done<jobfile

输出:

$ bash script.sh
JobName is jobA
table1
table2
table3
JobName is jobB
table4
table5
table6
table7
JobName is jobC
table8
table9

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。