在Heroku中设置环境变量(通过PowerShell)包含特殊字符

4
我正在尝试在Heroku上为Django的密钥设置环境变量,需要使用Powershell。
(venv) PS WORKFOLDER> heroku config:set SECRET_KEY=eoik6-&dnr9elgmrt7-%3hu_&37$3hg!9c6x!^khjr3!z*z&b4

我收到了以下错误信息(因为字符串中有3个&符号,所以出现了3次):
At line:1 char:77
+ heroku config:set SECRET_KEY=eoik6-&dnr9elgmrt7-%3hu_&37$3hg!9c6x!^khjr3!z*z&b4
+                                                                             ~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double
quotation marks ("&") to pass it as part of a string.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : AmpersandNotAllowed

当我尝试了建议的解决方案(在和号周围加上双引号)时:
(venv) PS WORKFOLDER> heroku config:set SECRET_KEY=eoik6-"&"dnr9elgmrt7-%3hu_"&"37$3hg!9c6x!^khjr3!z*z"&"b4

I got this error:

SECRET_KEY: eoik6-
'dnr9elgmrt7-%3hu_' is not recognized as an internal or external command, operable program or batch file.
'37$3hg!9c6x!^khjr3!z*z' is not recognized as an internal or external command, operable program or batch file.
'b4' is not recognized as an internal or external command, operable program or batch file.

我也尝试使用斜杠进行转义,将整个字符串放在引号中等等。结果相同。那么我该如何设置我的环境变量?

3个回答

6

我试过一些方法,发现在整个VALUE值外加上单引号(并将&符号用双引号括起来),该方法可行:

heroku config:set SECRET_KEY='eoik6-"&"dnr9elgmrt7-%3hu_"&"37$3hg!9c6x!^khjr3!z*z"&"b4'

可通过命令heroku config进行验证。


你是一个英雄! - Artur Müller Romanov

1

我对Heroku不太熟悉,但假设heroku是可执行文件,config:set SECRET_KEY=eo...是命令行参数,你可以尝试这样做:

& 'heroku' @('config:set', 'SECRET_KEY=eoik6-"&"dnr9elgmrt7-%3hu_"&"37$3hg!9c6x!^khjr3!z*z"&"b4')

我刚试了一下,那也可以!谢谢!看来我们的答案重叠了。 - woodduck
1
@woodduck 谢谢,使用外部可执行文件和命令行参数的 PS 有些棘手,参见这个答案了解为什么这段代码能够工作。 - beatcracker

0

还有一个可能引起问题的字符:')'。它会产生类似的错误:在此时 'x' 是意外的。 幸运的是,修复方法与和符号完全相同-只需将其用双引号括起来即可解决问题。 示例工作方案:

heroku config:set SECRET_KEY='7d"("5r9"^"dfghfd=fsdghw%9$")"zz")"yer68"^"346k-4_qndr%!c4h=r'

编辑:另一个有问题的字符是“^”。它很难被发现,因为PowerShell会从SECRET_KEY中省略它。它也需要用双引号括起来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接