zsh:`附近解析错误 ' 将 AWS 密钥添加为环境变量时

问题描述 投票:0回答:5

我有一个 Rails 应用程序,托管在 Heroku 上,并在 Amazon S3 上托管图像。我正在尝试使用以下方法将我的亚马逊凭证添加到我的应用程序中:

heroku config:add aws_access_key:<your access key> aws_secret_key:<your secret key>

我不断收到错误:

zsh: parse error near `\n'

我不知道问题是什么。

ruby-on-rails heroku amazon-web-services amazon-s3 zsh
5个回答
12
投票

您的密钥很可能包含一些对 zsh 有特殊含义的字符。

在键周围使用单引号 (

'
):

heroku config:add aws_access_key='<your access key>' aws_secret_key='<your secret key>'

如果您的键中有任何单引号,请改为写

'\''
。例如,而不是

aws_access_key=stevie's key

aws_access_key='stevie'\''s key'

说明:一对单引号之间的任何内容都完全按照编写的方式进行,不会有参数或命令替换或转义码。当第二个

'
结束引用时,您想要编写的任何
'
都必须在一对单引号之外以另一种方式引用,即
\'
"'"


5
投票

我也有同样的错误,已经解决了。因为我这样打字

$ heroku config:set AWS_SECRET_KEY=<A2D3F4H5A6D7HJ8KHF9>

然后出现错误。 像这样改变:

$ heroku config:set AWS_SECRET_KEY=A2D3F4H5A6D7HJ8KHF9

成功


1
投票

您的 Amazon 访问密钥或秘密密钥中可能有一些 ZSH 正在解释的“特殊”字符。您通常需要“转义”这些字符,但在这种情况下,您应该能够将字符串放在引号中。

试试这个(注意值周围的引号)

heroku config:add aws_access_key="<your access key>" aws_secret_key="<your secret key>"

1
投票

我在 GitHub 中尝试提交时遇到了同样的错误。事实证明,<> 是保留的,所以我当然不能命名其中的任何内容。 出于 SEO 目的发布此内容,供在 GitHub 中遇到相同问题的人使用。


0
投票

我在 if 语句末尾使用了

else
而不是
fi

if [ -z $SOMEVAR ]; then
    echo "hello, some var is set"
else  # <--- here I should have had `fi`


# if ... do some other stuff
# other stuff
# exit
© www.soinside.com 2019 - 2024. All rights reserved.