Shell 为什么要使用”/“;和”;bash“;运行脚本的结果是否不同?

Shell 为什么要使用”/“;和”;bash“;运行脚本的结果是否不同?,shell,Shell,我想使用curl命令在cloud中获取字符串并将其解析为 一本字典 我的外壳代码: #/bin/bash # 网址=https://raw.githubusercontent.com/Nova-He/python/master/base_images 申报-dic 对于x,单位为$(curl-s$URL);做 dic+=([$(echo$x | cut-d/-f1)]=“$(echo$x | cut-d/-f2)”) 完成 #打印所有密钥 echo${!dic[*]} #打印所有值 echo${

我想使用curl命令在cloud中获取字符串并将其解析为 一本字典

我的外壳代码:

#/bin/bash
#
网址=https://raw.githubusercontent.com/Nova-He/python/master/base_images
申报-dic
对于x,单位为$(curl-s$URL);做
dic+=([$(echo$x | cut-d/-f1)]=“$(echo$x | cut-d/-f2)”)
完成
#打印所有密钥
echo${!dic[*]}
#打印所有值
echo${dic[*]}
使用
/
运行:

➜ ./获取_ip_dic.sh
/get_ip_dic.sh:第6行:声明:-A:无效选项
声明:用法:声明[-afFirtx][p][name[=value]…]
./get_ip_dic.sh:11行:10.114.12.26:语法错误:无效的算术运算符(错误标记为“.114.12.26”)
但是,使用
bash
run:

➜ 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
在线搜索后,我知道这两种方法都在子shell中运行,没有什么不同。
因此,我不知道发生了什么,提前谢谢。

/get\u ip\u dic.sh
使用shebang,因此使用
/bin/bash
运行脚本。我假设您使用的是macOS,其中
/bin/bash
是版本3.2.56,它不支持关联数组


bash get_ip_dic.sh
,另一方面,运行搜索路径上最先出现的
bash
,这似乎是您自己安装的
bash
的更新版本。

确实涵盖了您吗?我可以,啊,指向那里吗。顺便说一句,
对于x in$(curl…
,通常是个坏主意(如未引用的使用<代码> ${fo[*] })。请参阅,并考虑在Wiki链接中运行代码并在警告中运行。您是对的,谢谢。