首页 > 解决方案 > 连接连接字符串

问题描述

此连接字符串适用于 psql:

psql "password='${INPUT_PASSWORD}' dbname=analytics host='${INPUT_HOST}' user=analytics port=32648"

我想让它更具可读性,尝试过:

psql "password='${INPUT_PASSWORD}'" +
     "dbname=analytics" +
     "host='${INPUT_HOST}'" +
     "user=analytics" +
     "port=32648"

"error: could not connect to server: No such file or directory"

然后尝试:

psql "password='${INPUT_PASSWORD}'" \
     "dbname=analytics" \
     "host='${INPUT_HOST}'" \
     "user=analytics" \
     "port=32648"

这给出了同样的错误。

有没有一种方法可以将字符串拆分为多行,并且仍然被 Postgres 接受为连接字符串?

标签: bash

解决方案


您第二次尝试的问题是您在每个参数及其后面的反斜杠之间注入了未加引号的空格。由于空格打算参数中,因此也需要引用它们。

psql "password='${INPUT_PASSWORD}' "\
     "dbname=analytics "\
     "host='${INPUT_HOST}' "\
     "user=analytics "\
     "port=32648"

使用bash,我将定义一个数组,并让数组参数扩展插入空格。

psql_args=(
    "password='$INPUT_PASSWORD'"
    dbname=analytics
    "host='${INPUT_HOST}'"
    user=analytics
    port=32648
)

psql "${psql_args[*]}"

(实际上,由于您似乎是自己构建 conninfo 字符串,而不是通过其他配置文件接收它,所以我可能会使用选项来指定每条信息。)


推荐阅读