在$(...)中使用heredoc而不是`...`

时间:2017-06-15 14:06:58

标签: bash shell

现在我有这个:

db_conn="mysql -sN -u$db_user -p$db_user_passwd -h$db_host -P$db_port -D$db_name"

query=`$db_conn <<-QRY
    SELECT foo
    FROM bar
    WHERE baz = 1;
QRY`

但我讨厌使用反引号来调用命令。如何使用$(...)

形式编写此内容

2 个答案:

答案 0 :(得分:1)

您可以使用反斜杠:

db_conn="mysql -sN -u$db_user -p$db_user_passwd -h$db_host -P$db_port -D$db_name"

query=$($db_conn \
    SELECT foo \
    FROM bar \
    WHERE baz = 1; \
)

当然,这意味着您在结果字符串中没有换行符,除非您自己添加。

答案 1 :(得分:1)

在heredoc分隔符后插入换行符:

query=$($db_conn <<-QRY
    SELECT foo
    FROM bar
    WHERE baz = 1;
QRY
)