0

Mac 操作系统在这里。在终端上,我创建以下.env文件:

export FIZZ=foo
export BUZZ="$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO"

然后我跑source .env && echo $FIZZ,我看到:

foo

到目前为止,一切都很好。但现在我运行echo $BUZZ,输出是:

a0.pQJ4oYWP.m4qdRKRQlyO

我明确地将 for 的值BUZZ放在双引号 ( "$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO") 中,那为什么输出为"a0.pQJ4oYWP.m4qdRKRQlyO"

4

1 回答 1

1

我能够重现你所看到的。我很确定您在 bash 所做的环境变量替换方面遇到了问题。(由“$”字符触发。)我知道“修复”它的两种方法。

一种是用前面的反斜杠转义“$”字符。 export BUZZ=\$2a\$10\$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO

另一个是更改引用字符串的方式。使用单引号而不是双引号 export BUZZ='$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO'...。

双引号允许环境变量替换继续,单引号防止发生这种情况。

于 2021-05-13T02:10:28.273 回答