当前位置: 首页 > 知识库问答 >
问题:

将stderr重定向到stdout到控制台和两个文件

子车鸿才
2023-03-14

我有一个调用函数的PowerShell脚本。我正在努力实现所有这些,但不确定如何实现:

  1. 将标准输出写入控制台并输出。txt
  2. 将STDERR写入控制台并输出。txt和err。txt
  3. 确保所有STDOUT和STDERR输出仍按其生成的顺序

这就是我到目前为止所拥有的将STDOUT和STDERR写入文件的功能,但它不能完成我需要的其余部分。

function doIt() {
    "hi"
    $test["a"]["b"]
    "bye"
}

doIt 2>&1 | Tee-Object out.txt

共有1个答案

罗光华
2023-03-14

类似的方法可能会奏效:

function doIt() {
    [CmdletBinding()]
    Param()
    "hi"
    $test["a"]["b"]
    "bye"
}

doIt -ErrorVariable e 2>&1 | Tee-Object out.txt
$e > err.txt

不过,这将在第二步中写入错误文件。我认为不能同时合并和不合并错误输出流。

 类似资料:
  • 问题内容: 我在cyberciti.biz的评论中看到了这个有趣的问题。 我发现我什至找不到在sh的单行命令中执行此操作的灵活方法。 到目前为止,我对解决方案的想法是: 但是您会看到,这不是同步的,而且致命的是,它是如此丑陋。 欢迎与您分享这个想法。:) 问题答案: 你要 这里的顺序很重要。假设stdin(fd 0),stdout(fd 1)和stderr(fd 2)最初都连接到tty,因此 首先

  • 我希望将名为bash的进程的stdout重定向到supervisor控制台,以便在启动supervisor时使用 命令,我可以看到子进程日志。我怎么能这么做?我尝试将syslog用于stdout_logfile属性,但它不起作用。

  • 问题内容: 我想将子进程的stderr输出重定向到stdout。常量应该这样做,不是吗? 然而, 确实 输出了一些东西。为什么会这样,如何在stdout上得到错误消息? 问题答案: 仔细阅读源代码即可得出答案。特别是,该文档在显示以下内容时会产生误导: 表示(…)的特殊值表示标准错误应与标准输出进入同一 句柄 。 由于在求值时stdout设置为“默认”(技术上来说),因此stderr也设置为“默认

  • 我想将stdout和stderr重定向到一个文件,同时保留输出顺序,然后还将stderr显示到屏幕上。我看到很多问题讨论它: https://unix.stackexchange.com/questions/9646/show-only-stderr-on-screen-but-write-both-stdout-and-stderr-to-file https://unix.stackexcha

  • 问题内容: 下面的代码完全符合我的要求,只将其打印到控制台。 randomcommand.php: 输出: 我想要实现的是: 实时将命令的stdout和stderr打印到控制台; 将命令的stdout和stderr记录到文件中,该文件与控制台中显示的完全相同。 尊重写到stdout和stderr的确切顺序,并且; 不修改命令本身 我试过将stdout和stderr命令传递到扫描仪中或使用io.Co

  • 问题内容: 要将 stdout 重定向到Bash中的截断文件,我知道使用: 为了重定向Bash中的 stdout ,将其附加到文件中,我知道要使用: 要将 stdout 和 stderr 都重定向到截断的文件,我知道使用: 如何将 stdout 和 stderr 都重定向到文件?没有为我工作。 问题答案: Bash执行从左到右的重定向,如下所示: :以追加模式打开并在那里重定向。 :重定向到 “当