
Wie kann ich diese Heredoc-definierte Variable an einen Befehl übergeben?
read -r -d '' tables <<'EOF'
table1
table2
table3
EOF
tables=$(tr '\n' ' ' < "$tables");
Ich möchte, dass die Tabellenvariable wie folgt definiert wird:
table1 table2 table3
Antwort1
Mit Bash können Sie einenHier-Zeichenfolge
tables=$(tr '\n' ' ' <<< "$tables")
Mit anderen Shells können Sieein andererhier Dokument
tables=$(tr '\n' ' ' << END
$tables
END
)
Antwort2
Normalerweise verwende ich einfach eine mehrzeilige Zeichenfolge.
tables="
table1
table2
table3"
echo $tables
for table in $tables; do echo $table; done
Ihr heredoc
wird auf meinem System gleichwertig behandelt
Antwort3
Sobald Sie Ihre mehrzeilige Variable haben, können Sie einfach Folgendes verwenden echo
:
echo "$tables" | tr '\n' ' '
Stellen Sie sicher, dass Sie doppelte Anführungszeichen verwenden, umschützendie Zeilenumbrüche. Vergleichen Sie:
$ echo $tables | tr '\n' '_'
table1 table2 table3_
mit:
$ echo "$tables" | tr '\n' '_'
table1_table2_table3_