我有这样的txt文件:
1 a
2 b
3 c
我想逐步采取这些数据,例如首先ı将获得“1”并将其变为可变,然后将“a”放入变量并运行卷曲命令
我的意思是第一排第一列然后是第二排第二列然后是第二排第一列......
ı在下面写了一个脚本但没有工作,它为b和c
变成了零变量#!/bin/sh
for ((i=1;i<=4;i++)); do
echo $i
b=$(awk 'NR==$i { print $1}' a.txt)
c=$(awk 'NR==$i { print $2}' a.txt)
echo $b
echo $c
curl -X POST \
-H "X-netmera-api-key: xxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '[
{
"deviceToken" : "$b",
"platform" : "1",
"extId" : "$c"
}
]' \
https://xxxx.xxxxx.com/rest/3.0/xxxxx
done
答案 0 :(得分:2)
扔掉awk
;这里没有必要。
while read -r b c; do
curl -X POST \
-H "X-netmera-api-key: xxxxxxxxxx" \
-H "Content-Type: application/json" \
-d "[
{
\"deviceToken\" : \"$b\",
\"platform\" : \"1\",
\"extId\" : \"$c\"
}
]" \
https://xxxx.xxxxx.com/rest/3.0/xxxxx
done < a.txt
你不应该像这样动态生成JSON,但这是另一个问题的问题。
答案 1 :(得分:1)
您需要使用-v将变量传递给awk,所以:
b=$(awk -v varb=$i 'NR==varb { print $1}' a.txt)
这里我们将awk变量varb设置为等于bash循环的i变量。