这是用小数排序列表的另一个问题:
$ list="1 2 5 2.1"
$ for j in "${list[@]}"; do echo "$j"; done | sort -n
1 2 5 2.1
我期待
1 2 2.1 5
答案 0 :(得分:4)
如果您打算将变量list
作为数组,那么您需要说:
list=(1 2 5 2.1)
会导致
1
2
2.1
5
答案 1 :(得分:2)
for j in $list; do echo $j; done | sort -n
或
printf '%s\n' $list|sort -n
答案 2 :(得分:0)
您不需要"${list[@]}"
,只需$list
,因为它只是一个字符串。否则它会在同一个字段中获取所有数字。
$ for j in $list; do echo $j; done | sort -n
1
2
2.1
5
使用您之前的代码,它根本没有排序:
$ list="77 1 2 5 2.1 99"
$ for j in "${list[@]}"; do echo "$j"; done | sort -n
77 1 2 5 2.1 99