我的种子文件包含以下内容。
$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次。如果我从种子文件中删除第一行,它将只运行一次。
我确定循环有问题,但我无法追踪。 请建议如何解决它。
答案 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”命令完成的。