【问题标题】:What does >& do?>& 做什么?
【发布时间】:2026-01-31 06:35:01
【问题描述】:

我在我正在处理的项目的 makefile 中有一个命令,但我不知道 java -jar java-cup-11a.jar -parser mj -dump src/mjparser/mj.cup >& javacup.dump 中的 >& 部分是做什么的。

bash 文档说这是非法的(当我尝试自动执行此操作时,我的 jenkins 也是如此)但是由于某种原因在工作机器上构建,这个命令是完全合法的,并且只能以这种方式工作。我已尝试将其更改为 >&1 以使其成为有效的重定向,但它会破坏命令并且无法处理它。

是否应该将 make 命令更改为包含引号以允许它作为单个命令执行?为什么我的 Jenkins 对这个命令的处理方式与类似环境不同?

【问题讨论】:

标签: bash jenkins io-redirection


【解决方案1】:

>&bashism

它同时重定向STDOUTSTDERR

相当于您正在使用的内容是:

java -jar java-cup-11a.jar -parser mj -dump src/mjparser/mj.cup > javacup.dump 2>&1

这也适用于shdash

【讨论】:

  • @Mithrandir 不幸的是,SO 不允许在用户名中使用 /
  • 这似乎很适合这个问题。你的得分令人印象深刻。