如何将heredoc定义的变量传递给命令


2

如何将此heredoc定义的变量传递给命令?

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

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

我希望将table变量定义为:

table1 table2 table3

Answers:


1

使用bash,您可以使用here-string

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

使用其他shell,您可以使用另一个此处文档

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

0

我通常只使用多行字符串。

tables="
table1
table2
table3"

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

heredoc在我的系统上等同地对待 你


0

获得多行变量后,您可以使用echo

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

请务必使用双引号来保护换行符。相比:

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

有:

$ echo "$tables" | tr '\n' '_'
table1_table2_table3_
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.