将stdout和/或stderr重定向到变量中的路径

威尔曼

如何将stdout和/或stderr重定向到在变量中指定的路径?注意:我不想覆盖变量本身,我想使std [xxx]写入变量中指定的文件。

例如,一个简单的脚本,如果scp命令失败,则将失败消息输出到指定的日志文件,而不是将失败消息打印到stderrstdout(我不确定失败时向哪个输出)。日志文件的路径存储在$LOG变量中:

LOG=/path/to/file.log
scp file1 host@remote

# do 'whatever' if scp command succeeds:
if [ $? = 0 ];
then
    whatever
else
    # else log both stdout/stderr to ${LOG} file
    &>"${LOG}"
    # DEBUG - print contents of ${LOG} var for testing purposes
    printf "${LOG}"

该脚本的结果未在/path/to/file.log文件中显示任何内容,而仅显示/path/to/file.logstdout因此,好像没有写入任何内容&>

我已经确认我的特定scp命令有效,所以我知道这不是潜在的问题。

还是这是处理自定义日志文件的最合适方法?是否有比配置变量中日志文件的路径更好的配置自己的日志系统的方法?

每一个

看起来您正在尝试运行命令记录输出,这是不可能的。

如果要scp无条件记录命令的输出,则只需要在命令本身所在的行中包括重定向操作符即可,即:

&>"${LOG}" scp file1 host@remote

如果只想在命令失败时保存日志输出(您似乎正在尝试在代码中执行此操作),那么将输出重定向到一个临时文件,然后将该文件移到所需位置该怎么办?它可能看起来像这样:

#!/bin/bash

# Set path the real log file location
LOG=/path/to/file.log

# Create a temporary file to capture standard output and standard error
TEMPLOG="$(mktemp)"

# Run command and redirect output to temporary logfile
2>"${TEMPLOG}" scp file1 host@remote

# do 'whatever' if scp command succeeds:
if [ $? = 0 ];
then
    echo 'Command successful!'

# else log both stdout/stderr to ${LOG} file
else
    # Move the log file from the temporary location to the desired location
    mv "${TEMPLOG}" "${LOG}"

    # DEBUG - print contents of ${LOG} var for testing purposes
    printf "${LOG}"
fi

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将stdout和stderr重定向到文件,并将stderr重定向到stdout

来自分类Dev

将stdout和stderr重定向到文件,并将stderr重定向到stdout

来自分类Dev

将stdout重定向到tcsh中的stderr

来自分类Dev

使用变量的Stdout和Stderr重定向

来自分类Dev

如何将stderr和stdout重定向到不同的文件并在终端中显示?

来自分类Dev

如何将bst脚本中的stdout和stderr都重定向到文件?

来自分类Dev

如何将stderr和stdout重定向到不同的文件并在终端中显示?

来自分类Dev

永久将stderr重定向到stdout

来自分类Dev

如何将stdout和stderr重定向到文件并显示stderr到控制台?

来自分类Dev

将stdout和stderr一起重定向VS重定向stdout,然后将stderr重定向到stdout的文件

来自分类Dev

Bash:将命令输出重定向到STDOUT和变量

来自分类Dev

bash:将stderr重定向到文件,将stdout + stderr重定向到屏幕

来自分类Dev

使用系统命令将stdout和stderr输出重定向到文件在perl中不起作用

来自分类Dev

使用系统命令将stdout和stderr输出重定向到文件在perl中不起作用

来自分类Dev

我如何将流程的stdout,stderr和stdin重定向到Groovy中的文件,以及从Bash shell中重定向文件?

来自分类Dev

将 stdout 和 stderr 都重定向到文件时,为什么必须将 stderr 重定向到 stdout 放在最后?

来自分类Dev

如何像在Bash shell中一样,将流程的stdout,stderr和stdin重定向到Groovy中的文件或从其中重定向?

来自分类Dev

将STDOUT和STDERR重定向到文件,但system()的标准输出/错误除外

来自分类Dev

如何将错误输出重定向到stdout和stderr?

来自分类Dev

从辅助线程将stdout和stderr重定向到PyQt4 QTextEdit

来自分类Dev

将stdout和stderr重定向到两个不同的日志文件

来自分类Dev

如何将stderr和stdout重定向到同一文件

来自分类Dev

Windows在管道传输时将STDERR和STDOUT重定向到同一程序

来自分类Dev

Cron将stdout和stderr重定向到其他文件

来自分类Dev

Linux:如何将stdout和stderr重定向到记录器?

来自分类Dev

如何将部分stderr和stdout重定向到/ dev / null

来自分类Dev

将stdout和stderr重定向到其他程序,而无需更改退出代码

来自分类Dev

使用/ bin / sh将stderr和stdout都重定向到/ dev / null

来自分类Dev

如何执行从终端将stdout和stderr重定向到systemd日志的程序?

Related 相关文章

  1. 1

    将stdout和stderr重定向到文件,并将stderr重定向到stdout

  2. 2

    将stdout和stderr重定向到文件,并将stderr重定向到stdout

  3. 3

    将stdout重定向到tcsh中的stderr

  4. 4

    使用变量的Stdout和Stderr重定向

  5. 5

    如何将stderr和stdout重定向到不同的文件并在终端中显示?

  6. 6

    如何将bst脚本中的stdout和stderr都重定向到文件?

  7. 7

    如何将stderr和stdout重定向到不同的文件并在终端中显示?

  8. 8

    永久将stderr重定向到stdout

  9. 9

    如何将stdout和stderr重定向到文件并显示stderr到控制台?

  10. 10

    将stdout和stderr一起重定向VS重定向stdout,然后将stderr重定向到stdout的文件

  11. 11

    Bash:将命令输出重定向到STDOUT和变量

  12. 12

    bash:将stderr重定向到文件,将stdout + stderr重定向到屏幕

  13. 13

    使用系统命令将stdout和stderr输出重定向到文件在perl中不起作用

  14. 14

    使用系统命令将stdout和stderr输出重定向到文件在perl中不起作用

  15. 15

    我如何将流程的stdout,stderr和stdin重定向到Groovy中的文件,以及从Bash shell中重定向文件?

  16. 16

    将 stdout 和 stderr 都重定向到文件时,为什么必须将 stderr 重定向到 stdout 放在最后?

  17. 17

    如何像在Bash shell中一样,将流程的stdout,stderr和stdin重定向到Groovy中的文件或从其中重定向?

  18. 18

    将STDOUT和STDERR重定向到文件,但system()的标准输出/错误除外

  19. 19

    如何将错误输出重定向到stdout和stderr?

  20. 20

    从辅助线程将stdout和stderr重定向到PyQt4 QTextEdit

  21. 21

    将stdout和stderr重定向到两个不同的日志文件

  22. 22

    如何将stderr和stdout重定向到同一文件

  23. 23

    Windows在管道传输时将STDERR和STDOUT重定向到同一程序

  24. 24

    Cron将stdout和stderr重定向到其他文件

  25. 25

    Linux:如何将stdout和stderr重定向到记录器?

  26. 26

    如何将部分stderr和stdout重定向到/ dev / null

  27. 27

    将stdout和stderr重定向到其他程序,而无需更改退出代码

  28. 28

    使用/ bin / sh将stderr和stdout都重定向到/ dev / null

  29. 29

    如何执行从终端将stdout和stderr重定向到systemd日志的程序?

热门标签

归档