如何在travis ci加密环境变量中转义$?

时间:2017-03-05 13:37:36

标签: travis-ci

Travis CI的用户文档有一个关于如何逃避安全环境变量的section。它似乎不适用于' $'符号。是否有任何特殊需要为' $'符号

我设置了这个例子。在.travis.yml:

travis encrypt "FAKE_PASSWORD=H3llo\\#Worl\\$d" -a

在我的脚本中,我回显变量并得到:

fake password is H3llo#Worl

$d似乎没有被替换。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

问题是当运行travis encrypt时,$符号需要为命令以及使用变量时进行转义。有两个反斜杠\\,它只在变量中创建一个反斜杠,$d仍然由bash扩展。使用三个反斜杠可以解决问题。

travis encrypt "FAKE_PASSWORD=H3llo\\#Worl\\\$d" -a

\\创建一个反斜杠,\$创建一个未被bash扩展的$符号。当travis运行bash命令来创建该变量时

FAKE_PASSWORD=H3llo\\#World\$d

这是bash在变量中使用$时所期望的。