Lê a entrada do arquivo e converte a linha lida em uma matriz [closed]

2

Eu tenho o seguinte código: Text read from file: "E" "01" "Adv - Initial" "07/11/2017"

E eu gostaria que fosse armazenado em uma matriz como abaixo: array[0] = "E" array[1] = "01" array[2] = "Adv - Initial" array[3] = "07/11/2017"

Eu tentei: itemData=( "$line" ) em um loop while. Mas não obtenho os resultados que quero.

    
por Berni 10.07.2017 / 18:14

2 respostas

1

Um dos problemas é "Adv - Initial" ser quebrado em Adv , - e Initial . Precisa jogar com a alteração de IFS .

#/bin/bash

savIFS=$IFS
IFS=\"
array=($line)
IFS=$savIFS

echo "${array[1]}"
echo "${array[3]}"
echo "${array[5]}"
echo "${array[7]}"
    
por 10.07.2017 / 20:00
0

Você deseja anexar sua matriz atual. Para conseguir isso,

declare -a array

para declarar sua matriz e

array+=("$line")

para adicionar um elemento ao seu array.

Manual de referência do bash :

In the context where an assignment statement is assigning a value to a shell variable or array index (see Arrays), the ‘+=’ operator can be used to append to or add to the variable's previous value.

    
por 10.07.2017 / 18:59