bash" command1 ||回声失败"写入同一个文件

时间:2017-02-03 22:44:58

标签: bash file output

如何编写命令输出或"失败"到同一个文件?我正在尝试的是下面的内容

command1 || echo failed > myfile.out

上述命令不能按预期工作。始终打印失败作为输出到myfile.out

1 个答案:

答案 0 :(得分:0)

对你的问题的评论可能会解决你的问题,但是我想提出另一种方法来处理它,对于那些不熟悉shell结构但有其他编程语言经验的人来说可能更容易理解。

您可以将命令放在函数中,然后将函数的输出重定向到文件,如下所示:

my_function()
{
  command1 || echo failed
}

my_function > myfile.out

重定向将捕获函数的整个输出。当你有许多命令输出要一起捕获时,这也很有用,而不是让一堆行重定向到同一个文件。

如果要同时捕获标准输出和标准错误(通常但不一定用于状态/错误消息),您可以执行以下操作:

my_function > myfile.out 2>&1

在这一行中,2>&1表示"获取文件描述符2(stderr)的输出并将其发送到文件描述符1(stdout)当前正在进行的位置"。顺序很重要,因为将此重定向放在第一个之前将不会产生相同的结果。