在 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
Run Code Online (Sandbox Code Playgroud)
for 循环不打印任何内容。你可以帮帮我吗?谢谢。
我相信您没有正确(或根本没有)转换数组。请看这个片段:
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
Run Code Online (Sandbox Code Playgroud)
现在的输出是:
100
i: 99
i: 98
Run Code Online (Sandbox Code Playgroud)
这听起来很合理。100当您询问时会打印echo $build_string。参考:bash中将字符串拆分为数组
正如prefire所指出的,第二行的双引号阻止了数组转换。这个片段也有效:
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
Run Code Online (Sandbox Code Playgroud)
注意:我sleep 2在末尾添加了 a,这样我就可以看到正在打印的内容。