代码之家  ›  专栏  ›  技术社区  ›  Catfish

与/bin/bash-c一起使用时awk不工作

  •  0
  • Catfish  · 技术社区  · 3 年前

    这可以正确打印 test

    $ echo 'this is a test' | awk '{print $4}'
    test
    

    在内部使用此命令时 /bin/bash -c 不起作用

    /bin/bash -c "echo 'this is a test' | awk '{print $4}'"
    this is a test
    

    与一起使用时,如何使awk正常工作 /bin/bash-c ?

    1 回复  |  直到 3 年前
        1
  •  5
  •   anubhava    3 年前

    $4 由于您有双引号命令字符串,因此由shell扩展。

    您可以通过添加以下内容来检查跟踪输出 -x 在里面 bash 命令行:

    bash -xc "echo 'this is a test' | awk '{print $4}'"
    + echo 'this is a test'
    + awk '{print }'
    this is a test
    

    自从 4. 展开为空字符串,它有效地运行 awk '{print }' 从而在输出中打印出整行。

    要解决这个问题,你应该使用转义符 $ 为了避免这种扩张:

    bash -c "echo 'this is a test' | awk '{print \$4}'"
    test