Bash/shell脚本:包含URL的表达式中出现Bash语法错误



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

url列表:

[root@ov]# openstack secret list -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]# secrets=($(openstack secret list -l 100 | awk -F "|" '{print $2}' | grep HTTP))
[root@ov]# for i in ${secrets[@]}; do echo ${secret[i]}; done
-bash: http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66: syntax error in expression (error token is "://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66")
[root@ov]# for i in ${secrets[@]}; do echo "${secret[i]}"; done
-bash: http://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66: syntax error in expression (error token is "://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: syntax error in expression (error token is "://10.250.23.52:9311/v1/secrets/0948091a-aa4c-4b32-988f-8a70284abe66")

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

我可以做echo http://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不是有效的数字表达式。

最新更新