我想根据命令的退出代码将命令的 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/