perl one liner +通过perl one liner line从脚本中删除密码

时间:2014-06-10 15:55:06

标签: linux perl bash shell ksh

我在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=

2 个答案:

答案 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