Bash/shell脚本:带有URL的表达式中存在Bash语法错误

Bash/shell脚本:带有URL的表达式中存在Bash语法错误,bash,shell,Bash,Shell,我有一个bash脚本,它将获得一个url列表,它将使用bashfor删除这些url URL列表: [root@ov]#openstack秘密列表-l 100 | awk-F“|”{print$2}| grep htt http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66 http://10.250.23.52:9311/v1/secrets/0bc37721-b4b4-4a2c-9e61-299bb9dd

我有一个bash脚本,它将获得一个url列表,它将使用bash
for
删除这些url

URL列表:

[root@ov]#openstack秘密列表-l 100 | awk-F“|”{print$2}| grep htt
http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66
http://10.250.23.52:9311/v1/secrets/0bc37721-b4b4-4a2c-9e61-299bb9dd47b7
http://10.250.23.52:9311/v1/secrets/0d16ac37-a9b2-4950-8615-21d0322fb0cc
http://10.250.23.52:9311/v1/secrets/706e5c7c-db0e-47b0-8b1c-ff5872a0f0cc
http://10.250.23.52:9311/v1/secrets/73e6dad4-c61f-45f1-9112-ca56bdeb1a39
http://10.250.23.52:9311/v1/secrets/7435473d-5731-4797-9917-476461a8e301
http://10.250.23.52:9311/v1/secrets/78ba680c-9c09-4e60-a515-e4f9ec9246d6
http://10.250.23.52:9311/v1/secrets/78c0f5eb-8527-43cf-9e5c-c7d32fa098cb
http://10.250.23.52:9311/v1/secrets/83470fd2-5f3d-4f75-80e9-80fa02a91ab1
http://10.250.23.52:9311/v1/secrets/84d15215-2719-4720-bccf-deb6543ca08a
http://10.250.23.52:9311/v1/secrets/87ae179e-a847-46af-be1f-41c8559c55f5
脚本如下所示:

[root@ov]#机密=($(openstack机密列表-l 100 | awk-F“|”{print$2}| grep HTTP))
[root@ov]#对于${secrets[@]}中的i;不回显${secret[i]};完成
-狂欢节:http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66:表达式中的语法错误(错误标记为“//10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66”)
[root@ov]#对于${secrets[@]}中的i;做回显“${secret[i]}”;完成
-狂欢节:http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66:表达式中的语法错误(错误标记为“//10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66”)
正如您所看到的,我也得到了这个错误:

-bash:http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66:表达式中的语法错误(错误标记为“//10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66”)

我在网上搜索了很多,但是每个人在表达式中都有不同的语法错误

我可以
echohttp://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66
但我不能
echo${secret[I]}
。为什么


请帮助,非常感谢。

i
是URL,所以只需重复以下内容:

for i in ${secrets[@]}; do echo $i; done
在这种情况下,引用没有什么区别,但最好是:

for i in "${secrets[@]}"; do echo "$i"; done

您之所以会收到错误,是因为您试图将URL用作数组索引的数字表达式,而URL不是有效的数字表达式。

引用应该可以做到这一点:
echo“${secret[i]}”
@EugenRieck我也这么认为,但正如您在我的更新中看到的,它仍然不起作用。我很困惑,谢谢你。事实上,我使用了错误的语法。我应该以两种方式之一使用for循环:${!secrets[@]}中的
for I;do echo“索引是$i,secret是${secrets[$i]}”;为${secrets[@]}中的i完成
;不要重复$i;完成