如何使用多个 cat 输入运行多个 for 循环



我有以下内容的种子文件。

$cat seed.txt
macmachine,192.168.2.4,29772
windowsmachine,192.168.2.5,29772
$

当我先运行循环时$x将 cat 从种子文件中macmachine的第一行的第一个字段,并"do"运行第二个循环,这将 cat 第一行的第二个字段,依此类推......

这是我的 for 循环

for x in `cat seed.txt |cut -d ',' -f1`; do
    for y in `cat seed.txt |cut -d ',' -f2`; do
        curl -v -H -X GET -H "X-TEST-Request-Id: Domain-$x" http://$y:8080/static/test/$y.jsp;
    done;
done

问题是它运行了 8 次。如果我从种子文件中删除第一行,它只会运行一次。

我确定循环有问题,但我无法追踪。请建议如何解决它。

当您想要逐行处理时,请执行类似操作的操作

while IFS=, read -r x y z; do
   curl -v -H -X GET -H "X-TEST-Request-Id: Domain-$x" "http://$y:8080/static/test/$z.jsp"
done < seed.txt

你试过做类似这个脚本的东西吗?

for x in `cat seed.txt` ; do
curl -v -H -X GET -H "X-TEST-Request-Id: Domain-$(echo $x | cut -f 1 -d ',')" http://$(echo $x | cut -f 2 -d ','):8080/static/test/$(echo $x | cut -f 2 -d ',').jsp
done

"for"语句读取文件各自迭代周期中的每一行(在本例中为两次),并将一行(或准确地说是用空格分隔的文本项)从文件分配给 x 变量,因此文件中的文本项数是文件中的多倍。接下来必须做的事情是将输入行(x 变量)拆分为子字符串变量并将它们提供给 curl,这是通过 "echo|cut" 命令完成的。

相关内容

  • 没有找到相关文章

最新更新