Carga vetor em bash [RESOLVIDO]

1. Carga vetor em bash [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 13/04/2020 - 20:47h

Olá.
Como faço para carregar um vetor no bash utilizando a saída de um comando pra criar os índices do vetor?
Por exemplo, pegar a saída do ls *.txt e colocar num array.

;
Cesar


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/04/2020 - 01:10h

cesarzz escreveu:

msoliver escreveu:


cesarzz escreveu:

Olá.
Como faço para carregar um vetor no bash utilizando a saída de um comando pra criar os índices do vetor?
Por exemplo, pegar a saída do ls *.txt e colocar num array.
Cesar

Boa noite Cesar.
Segue:
ARRAY_ARQ=($(ls -1))
echo ${ARRAY_ARQ[@]}


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Muito obrigado.
Poderia de explicar a diferença da forma abaixo (vi num post antigo) ?

Eu não entendo o porquê do seguinte:
array=( ${array[@]} `cat arquivo.txt` )

Essa parte do código acima, e logo depois o comando. Pra que serve esta forma?

#!/bin/bash
array=( ${array[@]} `cat arquivo.txt` )

for palavra in ${array[@]}; do
echo $palavra
done

Cesar, não entendi a razão de ${array[@]} , no comando:
array=( ${array[@]} `cat arquivo.txt` )
array=(`cat arquivo.txt` )
Tem o mesmo efeito.
É dado um cat no arquivo.txt,
note que o cat arquivo.txt, estra entre ' '
é o resultado é atribuído para a var array, do tipo "array",
Pois está entre parêntesis.

O segundo comando:
for palavra in ${array[@]}; do
echo $palavra
done
Pega cada elemento do ${array[@]}, atribui para a var palavra e mostra na tela.
o mesmo resultado é obtido com:
printf "%s\n" ${array[@]} 

Uma outra forma, é:
for arq in *;do ARRAY_ARQ+=("$arq");done
printf "%s\n" "${ARRAY_ARQ[@]}"
Área de trabalho
arqui.txt
Documentos
Downloads
Imagens
matematica.sh
matematica.sh~
Modelos
Música
Público
Vídeos

Existe a opção de gerar usando o índice:
array[0]=Viva
array[1]=o
array[2]=Linux
echo ${array[*]}
Viva o Linux
E ainda ...
IFS='.' read -a ipv4 <<< "127.0.0.1"

A diferença entre uma variável comum e um array,
Está em colocar entre ( ) ou, atribuir o índice.

exemplo:
var=(1 2 3 4 5 6) # é do tipo array com 5 elementos
var="1 2 3 4 5 6" # é uma variável comum
É isso....
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________

3. Re: Carga vetor em bash [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/04/2020 - 20:54h


cesarzz escreveu:

Olá.
Como faço para carregar um vetor no bash utilizando a saída de um comando pra criar os índices do vetor?
Por exemplo, pegar a saída do ls *.txt e colocar num array.
Cesar

Boa noite Cesar.
Segue:
ARRAY_ARQ=($(ls -1))
echo ${ARRAY_ARQ[@]}


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


4. Re: Carga vetor em bash [RESOLVIDO]

Cesar Rizzo
cesarzz

(usa CentOS)

Enviado em 13/04/2020 - 22:45h

msoliver escreveu:


cesarzz escreveu:

Olá.
Como faço para carregar um vetor no bash utilizando a saída de um comando pra criar os índices do vetor?
Por exemplo, pegar a saída do ls *.txt e colocar num array.
Cesar

Boa noite Cesar.
Segue:
ARRAY_ARQ=($(ls -1))
echo ${ARRAY_ARQ[@]}


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


Muito obrigado.
Poderia de explicar a diferença da forma abaixo (vi num post antigo) ?

Eu não entendo o porquê do seguinte:
array=( ${array[@]} `cat arquivo.txt` )

Essa parte do código acima, e logo depois o comando. Pra que serve esta forma?

#!/bin/bash
array=( ${array[@]} `cat arquivo.txt` )

for palavra in ${array[@]}; do
echo $palavra
done






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts