postgresql - 使用 shell 脚本解析 postgres-config.ini 什么都不返回,我错过了什么吗?
问题描述
我在 postgres-config.ini 文件中有这些参数:
PGUSER=usr
PGPASSWORD=pass
PGDATABASE=myDB
PGHOST=localhost
PGPORT=5432
我想解析它并使用 shell 脚本(sh 文件)连接到数据库。我像这样使用 source 和 grep 命令:
source <( grep = postgres-config.ini )
但是,当我尝试使用echo $PGHOST
它打印值时,不打印任何内容。
谁能帮助我我做错了什么?
解决方案
source
从命令行替换您的进程替换对我来说很好:
$ cat foo.sh
PGUSER=usr
PGPASSWORD=pass
PGDATABASE=myDB
PGHOST=localhost
PGPORT=5432
$ source <(grep = foo.sh)
$ echo $PGHOST
localhost
请注意,shell 变量不会被导出,因此它们在子进程中不可用。如果您在子流程中需要它们,请尝试:
source <(sed '/=/!d;s/^/export /' foo.sh)
它用于sed
向匹配的行添加export
命令=
。
另外,你source
从哪里运行?如果它在脚本中,请记住,当脚本结束时变量会消失,并且不会传递给父进程。
推荐阅读
- laravel - 如何在 laravel 中从数据库中获取条带密钥并发布密钥
- javascript - express http服务器应该与rabbitmq消费者解耦吗?
- javascript - 如何按js(react)中的特定字段对地图进行排序?
- c++ - PSS/E 和 C++ 的 Fortran 用户模型接口
- javascript - 我需要修改rowCallback jquery
- ios - WKWebView 检查网页视图是否支持加载文件
- ios - 你能告诉我如何在 kizitonwose/CountryPickerView(github) 的文本字段的左视图中减小标志大小吗
- java - 从 ElasticSearch 获取指定字段
- regex - 用于在两个字符串之间提取文本并在同一文件中修改和替换的 Shell 脚本
- javascript - 无法检查 Chrome 扩展中的局部变量是否为空