如何在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)
答案 0 :(得分:4)
${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[@]}
给出数组的长度。 v
访问该给定位置,例如${array[v]}
。一起变成${array[${#array[@]}-1]}
。
请注意,在bash中,数组不是以逗号分隔,而是以空格分隔。另外,我们使用()
定义它们,而不是[]
。如果您碰巧有一个逗号分隔值的字符串,那么只需使用awk
即可:
awk -F, '{print $NF}' <<< "$string"