【问题标题】:Escaping pipe in perl在 perl 中转义管道
【发布时间】:2014-07-29 13:05:40
【问题描述】:

我在 perl 中的 backtics 和 pipe 遇到了一些麻烦。我有以下代码:

my @arr_lsdev = `lsdev -C | grep inet | awk '{print \$1}'` ;
print Dumper @arr_lsdev ;

但我收到以下错误:

sh[2]: 0403-057 Syntax error : `|' is not expected

我猜这与我的转义命令有关。我试过逃避 |但它仍然会导致同样的错误。

操作系统:AIX

壳牌:KSH

【问题讨论】:

  • 为什么要使用管道?阅读所有 lsdev -C 并使用 perl 自己的文本处理能力。

标签: perl ksh


【解决方案1】:

请注意,错误在第 2 行。您实际上是在执行

my @arr_lsdev = `lsdev -C | grep inet
 | awk '{print \$1}'` ;

【讨论】:

    【解决方案2】:

    你可以减少管道的数量:

    my @arr_lsdev = map {(split ' ')[0]} grep {/inet/} `lsdev -C`;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2011-08-14
      • 2023-03-23
      相关资源
      最近更新 更多