
¿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 heredoc
recibes 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_