我想在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扩展仍在弄乱密码。
现在我的问题是:如何安全地获取一些环境变量并将其放置在其他位置?有什么更好的方法?我当然可以替换并转义未知变量中的其他字符,但是如何确定这是否足够?
使用适当的ENV
special variable:
ENV