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

时间:2016-05-20 19:04:07

标签: linux bash shell for-loop while-loop

我的种子文件包含以下内容。

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

当我第一次运行循环$x时,将从种子文件中获取第一行macmachine的第一个字段,并且#34; do"运行第二个for循环,这将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次。如果我从种子文件中删除第一行,它将只运行一次。

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

2 个答案:

答案 0 :(得分:1)

如果您想逐个处理一行,请执行

之类的操作
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

答案 1 :(得分:0)

你是不是试图制作像这个脚本那样的东西?

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”命令完成的。