以下构造子数组的代码给出输出 -
sdf,sdf,sdf,sdf
sdf,sdf,sdf,sdf
但预期的输出应该是
sdf,sdf,sdf,sdf
sdf,sdf
代码有什么问题?
#!/bin/bash
ary=("sdf","sdf","sdf","sdf")
team_one=( "${ary[@]:0:2}" )
echo "${ary[@]}"
echo "${team_one[@]}"
答案1
首先,您不需要使用逗号。Bash 中的数组以空格分隔;而不是像某些语言(例如 javascript)那样以逗号分隔。
所以你的代码看起来应该是这样的:
arr=("a" "b" "c" "d")
team_one=("${arr[@]:0:2}")
echo "${arr[@]}"
# a b c d
echo "${team_one[@]}"
# a b
您的代码存在的问题在于,"sdf","sdf","sdf","sdf"
数组被视为一个很大的长字符串,而不是字符串的四个实例sdf
。