我对在bash脚本中使用循环有一些疑问。我需要发送多个具有不同值的POST请求。所以我使用了循环。 在1个循环中,我更改了配置文件的名称,只需将配置文件的名称从1增加到500
#!/bin/bash
token="Authorization: Bearer h-bCxY3nCJD_Oro_aQE15soo-XFewv1bzsArbd46iJrH1t5Fxa3TLYaQ3Q"
url="http://ad44fcfa01aad11e98c201.amazonaws.com/api/v0.1/scanprofiles"
q=500
name=3_Ubuntu_internal
for ((i = 0; i < q; i++))
do
data='{"target":{"scan_type":"internal","ip_range":"10.142.0.2-10.142.0.5","ports":"1042"},"name":"'$name$i'","run_immediately":"False"}'
echo "${data}"
curl -X POST $url -H 'Content-Type: application/json' -H "$token" -d "$data"
done
它可以正常工作,使用IP和端口的默认参数创建500个配置文件。但是,然后我需要将默认端口从1042更改为一个数组,从1042更改为一个数组,再将其更改为1237。我尝试在现有的内部创建另一个循环,但并不能完全得到我想要的结果。 A.e.对于500个配置文件中的每一个,首先应用1042端口,然后应用1043,依此类推。我想创建具有1042端口的配置文件1,配置文件2-1043,依此类推。当然,配置文件的数量更多于从1042到1237的端口数量,但是可以,可以再次重复端口
答案 0 :(得分:1)
您可以尝试以下操作:
为起始端口添加一个变量:
port=1042
并在循环内递增它:
for ((i = 0; i < q; i++))
do
data='{"target":{"scan_type":"internal","ip_range":"10.142.0.2-10.142.0.5","ports":"'${port}'"},"name":"'$name$i'","run_immediately":"False"}'
echo "${data}"
curl -X POST $url -H 'Content-Type: application/json' -H "$token" -d "$data"
port=$((port+1))
done
这样,每个下一个端口将是前一个端口的增量。
例如,如果您不能通过端口1237,则可以在端口= $(((port + 1)))之后在循环内添加以下内容:
if [ "${port}" -eq "1237" ];then
port=1042
fi
...这将重置计数器并再次从1042开始端口递增。