我需要创建一个循环,以便可以将两个文本文件中列出的值用作curl命令中的变量。
例如,假设有一个名为destinations.txt的列表,如下所示:
facebook.com
pinterest.com
instagram.com
还有另一个名为keys.txt的文件,其中包含用于调用每个目标的API密钥,该文件如下所示:
abcdefghij-123
mnopqrstuv-456
qwertyuiop-789
这个循环的想法是提取数据,这样我就可以使用来自它们所在行的数据运行3个curl。这是一个示例,考虑到$ destination和$ key是从txt文件提取的值。
curl -k 'https://'"$destination"'//api/?type=op&cmd=asdasdf='"$key"
这些将是预期的结果:
第一轮:
curl -k https://facebook.com//api/?type=op&cmd=asdasdf=abcdefghij-123
第二轮:
curl -k https://pinterest.com//api/?type=op&cmd=asdasdf=mnopqrstuv-456
第三轮:
curl -k https://instagram.com//api/?type=op&cmd=asdasdf=qwertyuiop-789
我已经使用嵌套的while
/for
和尝试了多次paste
,但是由于复制了数据,结果与预期的不同。
您可以使用paste
command和awk
command组合两个文件,并使用迭代调用for loop
:
paste "destinations.txt" "keys.txt" > combined.txt
awk '{ printf "https://%s//api/?type=op&cmd=asdasdf=%s\n", $1, $2 }' combined.txt > allCurls.txt
for crl in `more +1 allCurls.txt`
do
echo `curl -k $crl`
done
如果要将的输出重定向curl
到某个文件:
count=1
for crl in `more +1 allCurls.txt`
do
# use the awk with the variable count,
#-v count=$count uses the shell variable in awk
filename=`awk -v count=$count 'NR==count{print $1}' destinations.txt`
filename="${filename}_curl_result.txt "
#redirect the curl output to filename
curl -k $crl > ${filename}
count=$((count+1))
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句