对于具有多列-BASH的文件的循环

时间:2018-03-07 15:18:32

标签: bash

我有以下文本文件(output.txt)

TECH-746 TECH 10400
TECH-747 TECH 10400

我需要读取所有列并将其传递给3个变量,然后将其提交给curl命令。虽然阅读简单不适用于curl(不知道为什么)所以我需要使用for loop(它适用于curl),我可以使用一个for循环或需要嵌套多个

for project in `cat output.txt`; do
echo $project
curl -D- -u user:pass -X POST --data "{\"fields\":{\"project\":{\"key\":\"TECH\"},\"parent\":{\"key\":\"$project\"},\"summary\":\"test",\"description\":\"test.\",\"issuetype\":{\"name\":\"Sub-task\"}}}" -H "Content-Type:application/json" --silent https://jira.company.com/rest/api/latest/issue/ >/dev/null

上面的代码有效,所以我只想“扩展”以包含文件

中的所有其他列

1 个答案:

答案 0 :(得分:3)

while read可以将一行划分为不同的变量。

while read project col2 col3
do
  curl -D- -u user:pass -X POST --data "{\"fields\":{\"project\":{\"key\":\"TECH\"},\"parent\":{\"key\":\"$project\"},\"summary\":\"test",\"description\":\"test.\",\"issuetype\":{\"name\":\"Sub-task\"}}}" -H "Content-Type:application/json" --silent https://jira.company.com/rest/api/latest/issue/ >/dev/null
done < sourcefile.txt

编辑: curl命令也会错过转义一个引号,比较下面两行,第一行是原始行,第二行是我已经纠正的行。

curl -D- -u user:pass -X POST --data "{\"fields\":{\"project\":{\"key\":\"TECH\"},\"parent\":{\"key\":\"$project\"},\"summary\":\"test",\"description\":\"test.\",\"issuetype\":{\"name\":\"Sub-task\"}}}" -H "Content-Type:application/json" --silent https://jira.company.com/rest/api/latest/issue/ >/dev/null
curl -D- -u user:pass -X POST --data "{\"fields\":{\"project\":{\"key\":\"TECH\"},\"parent\":{\"key\":\"$project\"},\"summary\":\"test\",\"description\":\"test.\",\"issuetype\":{\"name\":\"Sub-task\"}}}" -H "Content-Type:application/json" --silent https://jira.company.com/rest/api/latest/issue/ >/dev/null