如何在失败时退出多行shell脚本,并且仍然将错误流记录到文件中?

时间:2019-01-05 07:05:26

标签: bash shell

我正在尝试创建一个执行多个命令的shell脚本(例如test.sh),并将每个命令的stdout和stderr重定向到特定的日志文件。

但是,如果命令失败,则将stderr写入日志文件后,我想中止,而不是继续执行其余命令。

下面的工作,还是我需要做一些不同的事情?

    command1 > log1.txt 2>&1
    command2 > log2.txt 2>&1
    command3 > log3.txt 2>&1

1 个答案:

答案 0 :(得分:0)

确保每个命令在失败时都返回错误代码(即非零),然后可以使用该代码来保全包含的脚本,例如:

if command1 > log1.txt 2>&1; then
  if command2 > log2.txt 2>&1; then
    command3 > log3.txt 2>&1
  fi
fi

或更简洁:

command1 > log1.txt 2>&1 &&
command2 > log2.txt 2>&1 &&
command3 > log3.txt 2>&1