有没有办法在不遍历所有元素的情况下打印整个数组([key]=value)?
假设我创建了一个包含一些元素的数组:
declare -A array
array=([a1]=1 [a2]=2 ... [b1]=bbb ... [f500]=abcdef)
Run Code Online (Sandbox Code Playgroud)
我可以打印回整个数组
for i in "${!array[@]}"
do
echo "${i}=${array[$i]}"
done
Run Code Online (Sandbox Code Playgroud)
但是,似乎 bash 已经知道如何一次性获取所有数组元素 - 键${!array[@]}
和值${array[@]}
。
有没有办法让 bash 在没有循环的情况下打印这个信息?
编辑:
typeset -p array
这样做!
但是,我无法在一次替换中同时删除前缀和后缀:
a="$(typeset -p array)"
b="${a##*(}"
c="${b%% )*}"
Run Code Online (Sandbox Code Playgroud)
有没有更干净的方法来获取/打印输出的键=值部分?