Cómo pasar la variable definida por heredoc al comando

Cómo pasar la variable definida por heredoc al comando

¿Cómo puedo pasar esta variable definida por heredoc a un comando?

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

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

Quiero que la variable de la tabla se defina como:

table1 table2 table3

Respuesta1

Con bash, puedes usar unaquí-cadena

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

Con otros shells, puedes usarotroaquí documento

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

Respuesta2

Normalmente uso una cadena de varias líneas.

tables="
table1
table2
table3"

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

Tu heredocrecibes un trato equivalente en mi sistema.

Respuesta3

Una vez que tenga su variable de varias líneas, puede usar echo:

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

Sólo asegúrese de utilizar comillas dobles paraprotegerlas nuevas líneas. Comparar:

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

con:

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

información relacionada