我正在尝试执行脚本以在postgres中创建角色
$PSQL_CLIENT "host=$servername user=$DB_POSTGRES_USERNAME dbname=postgres password='$DB_PASSWORD'"问题出在密码上,它有6个单词,比如(Alpha beta charlie)和空格,我不能更改它
我也试过了:
$PSQL_CLIENT "host=$servername user=$DB_USERNAME dbname=postgres password=/"$DB_PASSWORD"/"每次我尝试连接时,我都会看到这个错误
psql: warning: extra command-line argument "password content" ignored
psql: warning: extra command-line argument "password content" ignored
psql: warning: extra command-line argument "password content" ignored
psql: warning: extra command-line argument "password content," ignored我认为password=/"$DB_PASSWORD"/"必须做出一些改变,不确定到底需要做些什么才能正确读取密码。任何帮助都将不胜感激
发布于 2021-10-15 05:33:19
正如the documentation所说:
要写入空值或包含空格的值,请用单引号将其括起来,例如
keyword = 'a value'。
因此,您的命令应该可以很好地处理包含空格的密码。如果您的密码包含'或\,您仍然会遇到问题,因为
值中的单引号和反斜杠必须用反斜杠进行转义,即\'
\\。
所以你需要使用
IFS='' escapedpwd=$(echo "$DB_PASSWORD" | sed -e "s/\([\']\)/\\\\\1/g")
$PSQL_CLIENT "host=$servername user=$DB_POSTGRES_USERNAME dbname=postgres password='$escapedpwd'"https://stackoverflow.com/questions/69579668
复制相似问题