如果我有这个数组
arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'
我如何才能在新阵列中仅存储 Debian、Ubuntu 和 Suse?像这样
new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'
答案1
一个可行的答案:
eval newArray=($(for i in "${arra[@]}" ; do echo "\"$i\"" ; done | sort -u))
它适用于数组元素中的空格,例如'Red Hat'
:您需要""
在变量值周围打印引号("\"$i\"")
以及eval
结果。
更优雅的选择
eval newArray=($(printf "%q\n" "${arra[@]}" | sort -u))
其中需要格式%q
来引用的输出printf
。