Perl的%ENV不适用于单行

时间:2014-11-14 11:30:14

标签: linux bash perl shell solaris

我编写简单的bash行应该替换某些bash脚本中的LOGIN字(将LOGIN替换为admin字) 但它不起作用?

但是当我在我的Linux / solaris机器上键入bash命令然后单独运行命令然后它的工作

那么为什么bash one liner不起作用(这里的差异是什么?)

bash one liner line

/tmp ROOT > bash -c 'export LOGIN=admin  ; /usr/local/bin/perl -i -pe 's/LOGIN/$ENV{LOGIN}/' /tmp/pass_login.bash'
ENV: Undefined variable.

在bash shell下单独运行命令(工作正常)

/tmp ROOT >  bash
bash-3.2#    export LOGIN=admin
bash-3.2#    /usr/local/bin/perl -i -pe 's/LOGIN/$ENV{LOGIN}/' /tmp/pass_login.bash

我的剧本

 more pass_login.bash


 #!/bin/bash

 MY_LOG_NAME=LOGIN

1 个答案:

答案 0 :(得分:1)

我不认为您的报价/变量已正确转义。试试这个:

bash -c 'export LOGIN=admin  ; /usr/local/bin/perl -i -pe "s/LOGIN/\$ENV{LOGIN}/" /tmp/pass_login.bash'