我如何将这个 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_