在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循环不输出任何内容。你可以帮帮我吗?谢谢。
答案 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
为空。