我想使用curl命令在云端获取字符串并将其解析为 字典。
我的shell代码:
#!/bin/bash
#
URL=https://raw.githubusercontent.com/Nova-He/python/master/base_images
declare -A dic
for x in $(curl -s $URL);do
dic+=([$(echo $x |cut -d/ -f1)]="$(echo $x |cut -d/ -f2)")
done
# print all key
echo ${!dic[*]}
# print all value
echo ${dic[*]}
使用./
运行:
➜ ./get_ip_dic.sh
./get_ip_dic.sh: line 6: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
./get_ip_dic.sh: line 11: 10.114.12.26: syntax error: invalid arithmetic operator (error token is ".114.12.26")
但是,使用bash
运行:
➜ bash get_ip_dic.sh
10.134.34.228 10.134.34.227 10.114.12.27 10.114.12.26 10.129.35.188
b5be4856d837 2b8b028e6eeb b5be4856d837 b5be4856d837 2b8b028e6eeb
在线搜索之后,我知道这两种方法都在子外壳中运行,没有什么不同。 所以,我不知道发生了什么事,谢谢。
答案 0 :(得分:1)
./get_ip_dic.sh
使用shebang,因此使用/bin/bash
运行脚本。我假设您使用的是macOS,其中/bin/bash
的版本是3.2.56,它不支持关联数组。
bash get_ip_dic.sh
会运行您搜索路径中最先出现的bash
,这似乎是您自己安装的bash
的较新版本。