我在makefile中有一个命令用于我正在处理的项目,我不知道>&
中的java -jar java-cup-11a.jar -parser mj -dump src/mjparser/mj.cup >& javacup.dump
部分是做什么的。
bash文档说这是非法的(当我尝试自动化时,我的jenkins也是如此)但由于某种原因在工作机器上构建,这个命令是完全合法的,只能这样工作。我已经尝试将其更改为>&1
以使其成为有效的重定向,但它会破坏命令并且无法处理它。
是否应该将make命令更改为具有周围的引号以允许它作为单个命令执行?为什么我的Jenkins对待此命令的方式与类似的环境不同?
答案 0 :(得分:3)
>&
是bashism。
重定向STDOUT
和STDERR
。
与您正在使用的内容相同的是:
java -jar java-cup-11a.jar -parser mj -dump src/mjparser/mj.cup > javacup.dump 2>&1
也适用于sh
和dash
。