在shell脚本中,我运行一个可能失败的命令。例如,在这里我工作在一个新的目录(mkdir foo && cd foo
),所以make
命令不能成功。在shell中处理错误并重定向输出
我处理错误与||
:
make || echo "No target"
...我打印输出的日志文件与tee
(stdout和stderr):
make 2>&1 | tee foo.log
怎么办两个一次?
make 2>&1 | tee foo.log || echo "No target"
:将错误写入日志文件,但不要在控制台中打印“无目标”;make || echo "No target" 2>&1 | tee foo.log
:在控制台中输出错误和“No target”,但在日志文件中只写入“No target”,而不是错误本身。
实际上,如果'cd'失败,你就不应该运行'make',而不是简单地检查'make'是否失败。 'mkdir foo && cd foo || {echo“can not cd foo”;出口1; }'。 – chepner