如何获取 bash 数组中的唯一项目?

如何获取 bash 数组中的唯一项目?

如果我有这个数组

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

相关内容