我在bash脚本中使用perl one liner,
为了从脚本中删除密码(因为安全问题,当我们想要从脚本中删除密码时,这是一个不错的解决方案)
问题是当我运行bash脚本时,perl一行删除了他的行,
后面的单词:导出PASSORD =
请在perl one liner line中建议需要更新的内容,以便忽略perl行中单词的删除?
备注 - 导出...行不在行的开头
从我的剧本中找到一条班轮线:
perl -i -pe 's/(?<=export PASSORD=).*//' /tmp/script.bash
我们运行之前的脚本
more /tmp/script.bash
#!/bin/bash
export LOGIN=root
export PASSORD=JH&*(@%VTVTB
/var/cti/download_password.ksh $PASSORD $LOGIN
perl -i -pe 's/(?<=export PASSORD=).*//' /tmp/script.bash
我们运行后的脚本
more /tmp/script.bash
#!/bin/bash
export LOGIN=root
export PASSORD=
/var/cti/download_password.ksh $PASSORD $LOGIN
perl -i -pe 's/(?<=export PASSORD=
答案 0 :(得分:2)
您可以按[ ]
匹配空格,以避免匹配特定行
perl -i -pe 's/(?<=export[ ]PASSORD=).*//' /tmp/script.bash
答案 1 :(得分:0)
您可以更改单行,这样它只能在匹配前面有空格:
perl -i -pe 's/^\s*export PASSORD=\K.*//' /tmp/script.bash
这使用需要Perl 5.10的\K
标志。
或者,将其中一个字母放在一个字符类([]
)中,这样正则表达式就不再与它的字面自我匹配了:
perl -i -pe 's/(?<=export PASSOR[D]=).*//' /tmp/script.bash