Como passar a variável definida heredoc para o comando

2

Como posso passar esta variável definida heredoc para um comando?

read -r -d '' tables <<'EOF'
table1
table2
table3
EOF

tables=$(tr '\n' ' ' < "$tables");

Eu quero que a variável da tabela seja definida como:

table1 table2 table3
    
por Clay 10.12.2015 / 03:34

3 respostas

2

Com o bash, você pode usar uma string aqui

tables=$(tr '\n' ' ' <<< "$tables")

Com outros shells, você pode usar outro aqui documento

tables=$(tr '\n' ' ' << END
$tables
END
)
    
por 10.12.2015 / 03:38
0

Eu costumo usar apenas uma string de várias linhas.

tables="
table1
table2
table3"

echo $tables
for table in $tables; do echo $table; done

Seu heredoc é tratado de maneira equivalente no meu sistema

    
por 10.12.2015 / 03:45
0

Depois de ter sua variável multilinha, você pode usar apenas echo :

echo "$tables" | tr '\n' ' '

Apenas certifique-se de usar aspas duplas para proteger as novas linhas. Comparar:

$ echo $tables | tr '\n' '_'
table1 table2 table3_

com:

$ echo "$tables" | tr '\n' '_'
table1_table2_table3_
    
por 10.12.2015 / 04:03

Tags