最近,我在我的Ubuntu14.04LTS上安装了PC ^ 2,以构成我们大学的ACM-ICPC竞赛环境.但是当我运行shell文件"pc2server"时,系统会给我一个错误警告
pc2server: 27: pc2server: Syntax error: "&" unexpected
Run Code Online (Sandbox Code Playgroud)
所以我检查文件pc2server并找到第27行.我发现代码是
java -d64 -version |& grep -q "Error" && JAVA32=1
Run Code Online (Sandbox Code Playgroud)
我知道什么是语法|和&手段,但我只想知道的是什么语法|&意味着什么.
从bash手册页:
管道
管道是由一个控制操作符
|或由一个控制操作符分隔的一个或多个命令的序列|&.管道的格式是:Run Code Online (Sandbox Code Playgroud)[time [-p]] [ ! ] command [ [|?|&] command2 ... ]命令的标准输出通过管道连接到command2的标准输入.此连接在命令指定的任何重定向之前执行(请参阅下面的REDIRECTION). 如果
|&使用,则命令的标准错误通过管道连接到command2的标准输入; 它是简写2>&1 |.在命令指定的任何重定向之后执行标准错误的隐式重定向.
检查你的哈希爆炸线.普通的sh不支持|&.