Bash for循环跳过数组的第一个元素

时间:2019-08-21 06:39:37

标签: bash

在bash中, 我有一个字符串,我想在数组中转换并在for循环中使用它,但跳过第一个元素。下面的代码不起作用:

build_string="100 99 98"
build_list=("$build_string")

echo $build_list
for i in "${build_list[@]:1}"
   do  echo "i: " $i
done

for循环不输出任何内容。你可以帮帮我吗?谢谢。

3 个答案:

答案 0 :(得分:2)

我相信您没有正确(或根本没有)转换阵列。 请查看以下代码段:

a

现在输出为:

build_string="100 99 98"
#build_list=("$build_string")  <-- this is not converting into array, following line is.
IFS=' ' read -r -a build_list <<< "$build_string"

echo $build_list
for i in "${build_list[@]:1}"
   do  echo "i: " $i
done

sleep 2

听起来合理。当您询问100 i: 99 i: 98 时,将打印100。 参考:split string into array in bash


正如prefire所指出的那样,第二行上的双引号阻止了数组转换。此代码段也适用:

echo $build_string

注意:我在末尾添加了build_string="100 99 98" build_list=($build_string) echo $build_list for i in "${build_list[@]:1}" do echo "i: " $i done sleep 2 ,所以我可以看到正在打印的内容。

答案 1 :(得分:1)

用以下内容替换第二行:

build_list=($build_string)

答案 2 :(得分:0)

build_list=("$build_string")

build_list数组只有一项,因此 ${build_list[@]:1为空。