0

这是用小数对列表进行排序的另一个问题:

$ 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
4

3 回答 3

4

如果您希望该变量list是一个数组,那么您需要说:

list=(1 2 5 2.1)

这将导致

1
2
2.1
5
于 2013-05-29T10:50:13.080 回答
2
for j in $list; do echo $j; done | sort -n

或者

printf '%s\n' $list|sort -n
于 2013-05-29T10:47:52.263 回答
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
于 2013-05-29T10:45:49.613 回答