【发布时间】:2020-06-11 14:48:25
【问题描述】:
我想在 bash 脚本中使用 perl 将文本文件中的某些字符串替换为可能包含各种特殊字符(密码)的其他字符串。包含特殊字符的变量来自环境,所以我不知道。
例如
# pw comes from the environment and I cannot be sure about it's content
pw='%$&/|some!\!smart%(]password'
pw=${pw//:/\\:}
perl -p -e "s:PASSWORD:$pw:" <<< "my pw is: PASSWORD" # this would come from a text file
# yields: my pw is: %PASSWORD/|some!!smart%(]password
这里我使用: 作为分隔符并转义之前可能出现的情况,这应该可以防止一些错误。但是执行此操作确实表明这甚至没有按预期远程工作。 bash 扩展仍然在弄乱密码。
现在我的问题是:如何安全地获取一些环境变量并将其放置在其他地方?什么可能是更好的方法?我当然可以替换和转义未知变量中的更多字符,但我怎么能确定这是否足够?
【问题讨论】: