如何编写命令输出或"失败"到同一个文件?我正在尝试的是下面的内容
command1 || echo failed > myfile.out
上述命令不能按预期工作。始终打印失败作为输出到myfile.out
答案 0 :(得分:0)
对你的问题的评论可能会解决你的问题,但是我想提出另一种方法来处理它,对于那些不熟悉shell结构但有其他编程语言经验的人来说可能更容易理解。
您可以将命令放在函数中,然后将函数的输出重定向到文件,如下所示:
my_function()
{
command1 || echo failed
}
my_function > myfile.out
重定向将捕获函数的整个输出。当你有许多命令输出要一起捕获时,这也很有用,而不是让一堆行重定向到同一个文件。
如果要同时捕获标准输出和标准错误(通常但不一定用于状态/错误消息),您可以执行以下操作:
my_function > myfile.out 2>&1
在这一行中,2>&1
表示"获取文件描述符2(stderr)的输出并将其发送到文件描述符1(stdout)当前正在进行的位置"。顺序很重要,因为将此重定向放在第一个之前将不会产生相同的结果。