【问题标题】:"syntax error near unexpected token `('" error with process substitution“意外标记'('附近的语法错误”进程替换错误
【发布时间】:2017-12-18 16:51:17
【问题描述】:

执行此命令时遇到问题:

sudo /usr/bin/comm -13 < (sort test.tsv) < (sort test_2.tsv)
Error: d_t.sh: line 4: syntax error near unexpected token `('
d_t.sh: line 4: `sudo /usr/bin/comm -13 < (sort test.tsv) < (sort test_2.tsv)'

【问题讨论】:

  • 删除&lt;(之间的空格。
  • 重新标记:这是bash 特有的,与centos 无关。
  • 如果 OP 使用 sh 运行脚本(正如他们的自我回答所暗示的那样),则根本不应将其标记为 bash。

标签: bash syntax


【解决方案1】:

尝试使用sudo

  • sudo sort test.tsv &gt; text1.tsv
  • sudo sort test2.tsv &gt; text2.tsv
  • sudo comm -13 text1.tsv text2.tsv

【讨论】:

    【解决方案2】:

    正确的进程替换语法是:

    sudo /usr/bin/comm -13 <(sort test.tsv) <(sort test_2.tsv)
    

    “”与括号之间没有空格。

    请参阅process substitution 上的 bash 黑客 wiki 页面。

    另请注意,POSIX sh 不支持进程替换。

    【讨论】:

    【解决方案3】:

    你可以一一使用命令

    • sort test.tsv &gt; text1.tsv sort test2.tsv &gt; text2.tsv comm -13 text1.tsv text2.tsv

    【讨论】:

      【解决方案4】:

      你可以尝试一一使用命令

      sort test.tsv > text1.tsv 
      sort test2.tsv > text2.tsv
      comm -13 text1.tsv text2.tsv
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-31
        • 2012-10-20
        • 2012-09-29
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        相关资源
        最近更新 更多