我有一个 Rails 应用程序,托管在 Heroku 上,并在 Amazon S3 上托管图像。我正在尝试使用以下方法将我的亚马逊凭证添加到我的应用程序中:
heroku config:add aws_access_key:<your access key> aws_secret_key:<your secret key>
我不断收到错误:
zsh: parse error near `\n'
我不知道问题是什么。
您的密钥很可能包含一些对 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'
说明:一对单引号之间的任何内容都完全按照编写的方式进行,不会有参数或命令替换或转义码。当第二个
'
结束引用时,您想要编写的任何 '
都必须在一对单引号之外以另一种方式引用,即 \'
或 "'"
。
我也有同样的错误,已经解决了。因为我这样打字
$ heroku config:set AWS_SECRET_KEY=<A2D3F4H5A6D7HJ8KHF9>
然后出现错误。 像这样改变:
$ heroku config:set AWS_SECRET_KEY=A2D3F4H5A6D7HJ8KHF9
成功
您的 Amazon 访问密钥或秘密密钥中可能有一些 ZSH 正在解释的“特殊”字符。您通常需要“转义”这些字符,但在这种情况下,您应该能够将字符串放在引号中。
试试这个(注意值周围的引号)
heroku config:add aws_access_key="<your access key>" aws_secret_key="<your secret key>"
我在 GitHub 中尝试提交时遇到了同样的错误。事实证明,<> 是保留的,所以我当然不能命名其中的任何内容。 出于 SEO 目的发布此内容,供在 GitHub 中遇到相同问题的人使用。
我在 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