访问最后但bash数组的元素

bru*_*lin 1 arrays bash

我可以像这样访问数组的所有元素:

echo ${myarray[@]}
Run Code Online (Sandbox Code Playgroud)

和元素的数量:

echo ${#myarray[@]}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式获得第n个元素:

echo ${myarray[@]:(-1)}
Run Code Online (Sandbox Code Playgroud)

但是我尝试以下方法来获取第n-1个数组元素:

echo ${myarray[@]:(-2)}
Run Code Online (Sandbox Code Playgroud)

但我最后得到了最后两个元素.我如何只获得最后一个元素?

Tom*_*ech 7

您可以添加另一个冒号,并指定切片的长度:

echo "${myarray[@]: -2: 1}"
Run Code Online (Sandbox Code Playgroud)

例如(虽然我很惭愧在这台机器上显示我的复古版bash ......):

$ echo "$BASH_VERSION"
3.1.20(4)-release
$ a=( 1 2 3 )
$ echo ${a[@]: -2: 1}
2
Run Code Online (Sandbox Code Playgroud)

  • 汤姆,你今天很火 (2认同)