【发布时间】:2021-12-29 01:39:29
【问题描述】:
我正在用 bash 处理数组。我有一个字符串数组,其中包含空格。我想要一个包含输入数组的第一个元素以外的所有元素的数组。
input=("first string" "second string" "third string")
echo ${#input[@]}
# len(input)=3
# get slice of all except for first element of input
slice=${input[@]:1}
echo ${#slice[@]}
# expect 2, but get 1
echo $slice
# second string third string
# slice should contain ("second string" "third string"), but instead is "second string third string"
对数组进行切片显然可以消除第一个元素,但结果似乎是所有剩余字符串的串联,而不是数组。有没有办法在 bash 中对数组进行切片并得到一个数组?
(抱歉,我对 bash 并不陌生,但我以前从未使用过它,而且我找不到任何文档说明为什么我的切片是扁平的)
【问题讨论】:
-
您应该将
slice作为一个数组来处理,而不是作为一个标量参数。试试slice=("${input[@]:1}")。 -
你需要说
slice=("${input[@]:1}"),而不是slice=${input[@]:1}。