Bash:除最后一个元素之外的所有数组

Ole*_*nge 6 bash

除了第一个,Bash有一个简洁的方法来给出数组中的所有元素:

"${a[@]:1}"           
Run Code Online (Sandbox Code Playgroud)

为了得到除了最后一个我发现的所有:

"${a[@]:0:$((${#a[@]}-1))}"
Run Code Online (Sandbox Code Playgroud)

但是,伙计,这是丑陋的.

有优雅的选择吗?

hee*_*ayl 11

我不确定它会有多大的改进,但你可以删除算术运算符($(()))和起始索引(0这里):

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

所以:

$ foo=( 1 2 3 )

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

正如您所看到的,改进纯粹是语法上的; 这个想法仍然是一样的.