代码之家  ›  专栏  ›  技术社区  ›  hotmeatballsoup

在shell上,环境var的MacOS导出被转义或被误解

  •  0
  • hotmeatballsoup  · 技术社区  · 4 年前

    .env

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

    然后我就跑 source .env && echo $FIZZ

    foo
    

    到目前为止,还不错。但现在我跑了 echo $BUZZ 输出为:

    a0.pQJ4oYWP.m4qdRKRQlyO
    

    我明确地把 BUZZ 用双引号( "$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO" ),那么为什么输出为 "a0.pQJ4oYWP.m4qdRKRQlyO" ?

    1 回复  |  直到 4 年前
        1
  •  1
  •   jcheli    4 年前

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

    export BUZZ=\$2a\$10\$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO

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

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