这是用小数对列表进行排序的另一个问题:
$ 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
如果您希望该变量list
是一个数组,那么您需要说:
list=(1 2 5 2.1)
这将导致
1
2
2.1
5
for j in $list; do echo $j; done | sort -n
或者
printf '%s\n' $list|sort -n
你不需要,"${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