我有一个 bash 文件,我需要将所有输出重定向到一个文件、调试日志以及终端。我需要将 stdout 和 stderr 都重定向到调试并记录脚本中的所有命令。
我不想为2>&1 | tee -a $DEBUG
文件中的每个命令添加。我可以忍受| tee -a $DEBUG
。
我记得有一种方法可以用类似exec 2>&1
.
目前我正在使用以下内容:
#!/bin/bash
DEBUGLOG=/tmp/debug
exec 2>&1
somecommand | tee -a $DEBUGLOG
somecommand2 | tee -a $DEBUGLOG
somecommand3 | tee -a $DEBUGLOG
Run Code Online (Sandbox Code Playgroud)
但它不起作用。有没有人有解决方案/可以解释原因?
我有一个 bash 脚本,它调用各种命令并打印一些输出(来自被调用的命令本身,例如git pull
,以及脚本本身生成的信息性消息,例如Operation took XX minutes
.
我想整个输出捕获到文件,从脚本本身:基本上我试图避免需要调用./myscript.sh | tee file.txt
的非相关,在这里的原因。
基本上我想做这样的事情:
startCapture
git pull
echo "Text"
other-command
endCapture
Run Code Online (Sandbox Code Playgroud)
我还要求在脚本运行时将输出打印在我的 shell 上。
最终目标是:
./myscript.sh
无需额外的 shell 结构即可运行这甚至可能吗?