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

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

我如何将这个 heredoc 定义的变量传递给命令?

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

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

我想要将表变量定义为:

table1 table2 table3

答案1

使用 bash,您可以使用此处字符串

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

对于其他 shell,你可以使用其他这里的文件

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

答案2

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

tables="
table1
table2
table3"

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

heredoc在我的系统上, 您的待遇是平等的

答案3

一旦您有了多行变量,您就可以使用echo

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

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

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

和:

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

相关内容