Como passar a variável definida pelo heredoc para o comando

Como passar a variável definida pelo heredoc para o comando

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

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

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

Quero que a variável da tabela seja definida como:

table1 table2 table3

Responder1

Com o bash, você pode usar umstring aqui

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

Com outras conchas, você pode usaroutroaqui documento

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

Responder2

Normalmente uso apenas uma string de várias linhas.

tables="
table1
table2
table3"

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

Você heredocé tratado de forma equivalente em meu sistema

Responder3

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

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

Apenas certifique-se de usar aspas duplas paraprotegeras novas linhas. Comparar:

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

com:

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

informação relacionada