【问题标题】:Perl's %ENV doesn't works in one-linerPerl 的 %ENV 在单行中不起作用
【发布时间】:2015-01-11 18:51:58
【问题描述】:

我编写了简单的 bash 行,应该替换一些 bash 脚本中的 LOGIN 字(将 LOGIN 替换为管理员字) 但它不起作用?

但是当我在我的 Linux/solaris 机器上输入 bash 命令然后单独运行这些命令时,它就可以工作了

那么为什么 bash 一个班轮不起作用(这里有什么区别?)

bash 一条线

/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

【问题讨论】:

  • 问题中的错误 - ENV: Undefined variable
  • 如果您将问题的标题替换为更不言自明的标题,那就太好了。
  • 要将' 插入' 中的bash 文字,可以使用'\''。例如bash -c 'echo '\''$foo'\''; echo bar'bash 执行 echo '$foo'; echo bar'

标签: linux bash perl shell solaris


【解决方案1】:

在我看来,您的引号/变量未正确转义。试试这个:

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

【讨论】:

    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 2014-09-03
    • 2021-02-13
    • 2017-02-15
    • 2022-12-16
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多