有点hacky,但是应该这样做:
echo "${ids[@]}" | tr ' ' 'n' | sort -u | tr 'n' ' '要将排序后的唯一结果保存回数组,请执行数组分配:
sorted_unique_ids=($(echo "${ids[@]}" | tr ' ' 'n' | sort -u | tr 'n' ' '))如果您的外壳支持herestrings(
bash应该),则可以
echo通过将其更改为以下内容来节省进程:
tr ' ' 'n' <<< "${ids[@]}" | sort -u | tr 'n' ' '输入:
ids=(aa ab aa ac aa ad)
输出:
aa ab ac ad
说明:
"${ids[@]}"-使用shell数组的语法,无论是作为一部分echo
还是在此处使用。该@
部分的意思是“数组中的所有元素”tr ' ' 'n'
-将所有空格转换为换行符。因为您的数组被shell视为一行上的元素,并用空格分隔;并且因为sort期望输入在单独的行上。sort -u
-仅排序和保留唯一元素tr 'n' ' '
-将我们先前添加的换行符转换回空格。$(...)
- 命令替换- 除了:
tr ' ' 'n' <<< "${ids[@]}"是一种更有效的方法:echo "${ids[@]}" | tr ' ' 'n'



