linux - 根据其退出代码 bash 脚本将命令重定向到变量或文件?

标签 linux bash unix exit-code

我想根据命令的退出代码将命令的 stderr 或 stdout 重定向到文件或变量。即,如果退出代码为零,那么我会将 stdout 重定向到文件,否则我将重定向到 stderr。

最佳答案

不幸的是,如果不执行两次命令,就无法同时捕获 stdout 和 stderr 并将它们存储在不同的变量中。相反,您必须将输出重定向到不同的临时文件,然后根据退出代码保留您想要的文件。例如:

#Send the output to different files
dosomething >tempout 2>temperr

case $? in
    0)
        mv tempout outfile.txt
        rm temperr;;
    1)
        mv temperr outfile.txt
        rm tempout;;
    2)
        mv tempout outfile.txt
        cat temperr >> outfile.txt
        rm temperr;;
    3)
        var=$(cat tempout)
        rm tempout temperr
    #...etc
esac

应该做的工作。如果您想将 stderr(或两者)发送到变量,请不要忘记完成 case 语句。

关于linux - 根据其退出代码 bash 脚本将命令重定向到变量或文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37371642/

相关文章:

regex - sed:返回最后一次匹配直到文件结束

c - fork() 之前的文件描述符

linux - 如何设置 linux 内核不发送 RST_ACK,这样我就可以在原始套接字中提供 SYN_ACK

linux - 使用 awk 将 csv 拆分为多个带标题的文件

python 的 alsaaudio.mixer 不刷新混音器设置

c - `getlogin()` 是通过读取 `/var/run/utmp` 实现的吗?

bash - Bash 脚本中的多个 If 语句

linux - 从 .sh 文件执行时,Bash foreach 循环的工作方式不同

Java 日志记录 : multiple small file vs one big

c++ - 关闭时删除命名管道