bash中的数组拆分

Ash*_*win 1 bash

下面这段用于构造子数组的代码给出了输出 -

sdf,sdf,sdf,sdf
sdf,sdf,sdf,sdf
Run Code Online (Sandbox Code Playgroud)

但预期的输出应该是

sdf,sdf,sdf,sdf
sdf,sdf
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?

 #!/bin/bash

    ary=("sdf","sdf","sdf","sdf")
    team_one=( "${ary[@]:0:2}" )
    echo "${ary[@]}"
    echo "${team_one[@]}"
Run Code Online (Sandbox Code Playgroud)

Ale*_*ura 8

首先,您不需要使用逗号。Bash 中的数组是用空格分隔的;不像某些语言(例如 javascript)那样以逗号分隔。

所以你的代码应该是这样的:

arr=("a" "b" "c" "d")
team_one=("${arr[@]:0:2}")
echo "${arr[@]}"
# a b c d
echo "${team_one[@]}"
# a b
Run Code Online (Sandbox Code Playgroud)

您的代码的问题在于,"sdf","sdf","sdf","sdf"在数组中被视为一个大的长字符串,而不是字符串的四个实例sdf