选择以逗号分隔的数组的最后一个元素

时间:2015-04-03 12:34:05

标签: arrays bash

如何在bash中用逗号分隔数组的最后一个元素?

[8.5, 7.7, 7.2, 7.1, 7.0, 7.0, 6.6, 5.8, 5.9, 5.4, 5.2, 5.1, 5.5, 7.4, 8.4, 9.6, 10.7, 11.4, 12.5, 13.2, 14.2, 14.8, 15.8, 16.5]

如果数组被调用$temp,如果我输入终端

echo ${temp[@]:(-1)}

我得到号码5

Fedorqui,我有些不对劲......我得到了相同的

[enric@localhost ]$ echo $temp

(8.5,7.7,7.2,7.1,7.0,7.0,6.6,5.8,5.9,5.4,5.2,5.1,5.5,7.4,8.4,9.6,10.7,11.4,12.5,13.2,14.2,14.8,15.8, 16.5,17.3)

[enric@localhost ]$ echo ${temp[${#temp[@]}-1]}

(8.5,7.7,7.2,7.1,7.0,7.0,6.6,5.8,5.9,5.4,5.2,5.1,5.5,7.4,8.4,9.6,10.7,11.4,12.5,13.2,14.2,14.8,15.8, 16.5,17.3)

1 个答案:

答案 0 :(得分:4)

非常直接的东西(Tom Fenech的信用)

${array[@]: -1}

在较新版本的bash中,您也可以使用否定索引,如access last but element of bash array中所述:

${array[-1]}

使用一些算术

使用:

${array[${#array[@]}-1]}

请参阅:

$ array=(8.5, 7.7, 7.2, 7.1, 7.0, 7.0, 6.6, 5.8, 5.9, 5.4, 5.2, 5.1, 5.5, 7.4, 8.4, 9.6, 10.7, 11.4, 12.5, 13.2, 14.2, 14.8, 15.8, 16.5)
$ echo ${array[${#array[@]}-1]}
16.5
  • ${#array[@]}给出数组的长度。
  • 我们将值减1,因为第一个元素是第0个。
  • 然后我们使用v访问该给定位置,例如${array[v]}

一起变成${array[${#array[@]}-1]}

请注意,在bash中,数组不是以逗号分隔,而是以空格分隔。另外,我们使用()定义它们,而不是[]。如果您碰巧有一个逗号分隔值的字符串,那么只需使用awk即可:

awk -F, '{print $NF}' <<< "$string"
相关问题