fluxo de saída em um fluxo de variáveis

0

Eu tenho duas consultas que estou executando em dois sistemas diferentes. Cada um deles retorna uma linha e eu quero gerá-los em uma única linha.

se as consultas produzirem resultados semelhantes a:

echo this that and more
echo other great news

Eu quero fazer algumas reordenações e formatações da seguinte forma:

echo other this that great news and more 

Se eu conseguisse descobrir como reproduzir a saída da linha em várias variáveis, seria bom. Eu tenho isso para trabalhar:

echo this that and more | while IFS=" ", read a b c
do
  echo a=$a b=$b c=$c
done 

Mas, uma vez que estou fora do ciclo while, as variáveis a bec estão fora do escopo e não têm mais seus valores.

    
por markwusinich 18.01.2017 / 23:50

2 respostas

1

Não é que eles estejam fora do escopo , ksh (pelo menos a versão AT & T) não tem essa limitação de bash . É que read é chamado duas vezes.

A segunda vez é aquela em que ela falha e tira você do loop.

Como esse segundo read não lê nada, define a, b e c para a string vazia.

Basta fazer:

echo this that and more | IFS=" " read a b c
echo "a=$a b=$b c=$c"
    
por 18.01.2017 / 23:57
0
a=$(echo this...)
b=$(echo other...)
echo -- "$a $b"
    
por 19.01.2017 / 02:43

Tags