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
)
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
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
)
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
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_
Tags shell