此连接字符串适用于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?
第二次尝试的问题是在每个参数和后面的反斜杠之间注入了未加引号的空白。因为在参数中,空格是,所以它们也需要加引号。 使用 (实际上,由于您似乎是自己构造conninfo字符串,而不是通过其他配置文件接收它,因此我可能会使用选项来指定每条信息。)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[*]}"
为什么不直接:
psql "password='${INPUT_PASSWORD}'
dbname=analytics
host='${INPUT_HOST}'
user=analytics
port=32648"
(作为答案,因为你不能在注释中做多行)