bash - 连接连接字符串
问题描述
此连接字符串适用于 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 接受为连接字符串?
解决方案
您第二次尝试的问题是您在每个参数及其后面的反斜杠之间注入了未加引号的空格。由于空格打算在参数中,因此也需要引用它们。
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 字符串,而不是通过其他配置文件接收它,所以我可能会使用选项来指定每条信息。)
推荐阅读
- javascript - 在 RXJS 中创建自定义 pipable 运算符
- python - TensorFlow 内存堆栈管理
- python - 以最少的行和列打印列表
- tree - 当我们在树上找到多个目标中的一个时,我们会停下来吗?
- python - 在pyqt5中按下按钮有时间限制吗?
- ios - ios画外音滑块双击并按住,但用于自定义视图
- java - 检查查询结果是否已更改,以免重新查询所有内容?
- javascript - 在添加侦听器的函数中声明/包含的函数中删除事件侦听器
- javascript - 我应该为 Building library 选择哪个?ES5 或 ES6
- phpxlsxwriter - phpxlsxwriter 在一个单元格上插入多种字体样式