谁能解释一下?

mynameisbill2 2017-10-03 10:27:23
#!/bin/bash
activemq() {
port=$(curl -uadmin:admin http://127.0.0.1:8161/admin/topics.jsp 2>/dev/null| grep -A 4 "${QUEUENAME}</a></td>"|awk -F '<' '{print $1}'|grep '^[a-Z]')
echo ${#port[@]}
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
printf '\t {\n'
printf "\t\t\t\"{#QUEUENAME}\":\"${port[${key}]}\"},\n"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#QUEUENAME}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
}
activemq $1

#!/bin/bash
activemq() {
MQ_IP=(127.0.0.1:8161)
for g in ${MQ_IP[@]}
do
port=($(curl -uadmin:admin http://127.0.0.1:8161/admin/topics.jsp 2>/dev/null| grep -A 4 "${QUEUENAME}</a></td>"|awk -F '<' '{print $1}'|grep '^[a-Z]'))
done
echo ${#port[@]}
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
printf '\t {\n'
printf "\t\t\t\"{#QUEUENAME}\":\"${port[${key}]}\"},\n"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#QUEUENAME}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
}
activemq $1

两段代码仅仅差一个for循环,而且for循环只执行了一次,但是第一段代码port数组长度为1,第二段代码数组长度为3
第一段代码的执行结果:
1
{
"data":[
{
"{#QUEUENAME}":"ActiveMQ.Advisory.MasterBroker
ActiveMQ.Advisory.Connection
ActiveMQ.Advisory.Queue"}
]
}
第二段代码的执行结果:
3
{
"data":[
{
"{#QUEUENAME}":"ActiveMQ.Advisory.MasterBroker"},
{
"{#QUEUENAME}":"ActiveMQ.Advisory.Connection"},
{
"{#QUEUENAME}":"ActiveMQ.Advisory.Queue"}
]
}
还有就是${!port[@]}是什么意思?
...全文
183 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mynameisbill2 2017-10-05
  • 打赏
  • 举报
回复

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧