linux capture bash scripts actions

Jan 31, 2019 00:00 · 258 words · 1 minute read shell

shell

#!/bin/bash
set -e
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>log.out 2>&1
return&exit 0

说明:

0 - stdin 标准输入
1 - stdout 标准输出
2 - stderr 标准错误输出

exec 3>&1 4>&2

保存文件描述符,以便在重定向之前将它们还原为它们之前的任何内容,或者将它们用于输出到以下重定向之前的任何内容。

trap ‘exec 2>&4 1>&3’ 0 1 2 3

恢复特定信号的文件描述符。通常不必要,因为当子shell退出时它们应该被恢复。

exec 1>log.out 2>&1

重定向stdout到文件log.out然后重定向stderr到stdout。请注意,当您希望它们转到同一文件时,顺序很重要。在将stderr重定向到stdout之前,必须重定向stdout