Bash:如何在变量中存储STDOUT(&1)指针

men*_*ana 4 bash stdout io-redirection

这是一个简单(也许是虚拟)问题,在一个简单的问题场景中.

我想将输出文件存储在变量中:

#!/bin/bash
LOG=/var/log/myown/backup.log
Run Code Online (Sandbox Code Playgroud)

所以我可以这样构建我的脚本:

#!/bin/bash
LOG=/var/log/myown/backup.log
echo "Backup créé le $(date)" >>$LOG
Run Code Online (Sandbox Code Playgroud)

另外,我想让LOG变量指向STDOUT.

然后我可以简单地更改LOGas 的值,LOG=&1因此它不会写入文件而是写入STDOUT.

kon*_*box 8

这是你需要的吗?

LOG=/dev/stdout
Run Code Online (Sandbox Code Playgroud)

也许:

LOG=/var/log/myown/backup.log
exec 4> "$LOG"  ## exec >>4 "$LOG" to append
echo "Backup créé le $(date)" >&4
Run Code Online (Sandbox Code Playgroud)

或者最后:

LOG=/var/log/myown/backup.log
exec 4> "$LOG"  ## exec >>4 "$LOG" to append
LOG_FD=4  ## Change to 1 to put back to stdout.
echo "Backup créé le $(date)" >&"$LOG_FD"
Run Code Online (Sandbox Code Playgroud)

您还可以使用功能以方便:

function log {
    echo "$1" >&"$LOG_FD"
}
log "Backup créé le $(date)"
Run Code Online (Sandbox Code Playgroud)