- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 Subversion post-commit hook .我需要将一个命令的输出强制为 STDERR,以便提交后 Hook 将消息编码回客户端。
如何将 STDOUT 强制转换为 STDERR?
在这个简化的示例中,文件 foo
存在,但 bar
不存在。
# touch foo
# ls foo bar
ls: bar: No such file or directory
foo
我想将 STDOUT 发送到 STDERR。我以为我可以用 >&2
做到这一点,但它似乎不起作用。
我期待以下示例将 STDOUT 重定向到 STDERR,并且 /tmp/test
将包含命令的输出和错误。但相反,STDOUT 似乎从未重定向到 STDERR,因此 /tmp/test
仅包含来自命令的错误。
# ls foo bar >&2 2>/tmp/test
foo
# cat /tmp/test
ls: bar: No such file or directory
我错过了什么?
我已经在 CentOS、Ubuntu、FreeBSD 和 MacOSX 上尝试过上面的例子。
最佳答案
shell 重定向一次评估一个,从左到右。所以当你有:
# ls foo bar >&2 2>/tmp/test
首先将 stdout 重定向到 stderr(不管它最初是什么——可能是终端),然后将 stderr 重定向到/tmp/test。因此,stdout 将指向 stderr 最初指向的任何内容,而不是指向文件。你要
# ls foo bar 2>/tmp/test >&2
首先将 stderr 重定向到文件,然后将 stdout 重定向到同一个地方。
关于shell - 伯恩 shell : Force STDOUT to STDERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490289/
有什么不同: if IsServerStarted ; then ... 和 if [ IsServerStarted -eq 0 ] ; then ... 在我看来这两个陈述应该是等价的?奇怪的是,
我正在创建一个 Subversion post-commit hook .我需要将一个命令的输出强制为 STDERR,以便提交后 Hook 将消息编码回客户端。 如何将 STDOUT 强制转换为 ST
谷歌终于让我失望了。我似乎无法在 Bourne shell 脚本中找到如何执行此操作: 我正在编写一个 shell 脚本来处理我对一个项目的所有测试。我已经为该脚本可以执行的每个任务(构建、运行、清理
我是一名优秀的程序员,十分优秀!