我编写简单的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
答案 0 :(得分:1)
我不认为您的报价/变量已正确转义。试试这个:
bash -c 'export LOGIN=admin ; /usr/local/bin/perl -i -pe "s/LOGIN/\$ENV{LOGIN}/" /tmp/pass_login.bash'