Array Dividindo em bash [closed]

0

Esta parte de código a seguir para construir uma sub-matriz fornece a saída -

sdf,sdf,sdf,sdf
sdf,sdf,sdf,sdf

Mas o resultado esperado deve ser

sdf,sdf,sdf,sdf
sdf,sdf

O que há de errado com o código?

 #!/bin/bash

    ary=("sdf","sdf","sdf","sdf")
    team_one=( "${ary[@]:0:2}" )
    echo "${ary[@]}"
    echo "${team_one[@]}"
    
por Ashwin 16.04.2014 / 22:50

1 resposta

6

Primeiro, você não precisa usar vírgulas. Matrizes no Bash são delimitados por espaço; não delimitado por vírgulas como é o caso em algumas linguagens, como o javascript.

Assim, o seu código deve ser algo como isto:

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

O problema com o seu código foi que "sdf","sdf","sdf","sdf" em um array é tratado como uma grande string longa em vez de quatro instâncias da string sdf .

    
por Alexej Magura 16.04.2014 / 23:27