相关疑难解决方法(0)

将stdout的COPY重定向到bash脚本本身的日志文件

我知道如何将stdout重定向到文件:

exec > foo.log
echo test
Run Code Online (Sandbox Code Playgroud)

这会将'test'放入foo.log文件中.

现在我想将输出重定向到日志文件并将其保存在stdout上

即它可以从脚本外部轻松完成:

script | tee foo.log
Run Code Online (Sandbox Code Playgroud)

但我想在脚本本身内声明它

我试过了

exec | tee foo.log
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

bash shell logging redirect

224
推荐指数
6
解决办法
14万
查看次数

使用set -x时,重定向bas​​h脚本中的所有输出

我有一个bash脚本set -x.是否可以将此脚本的调试打印及其所有输出重定向到文件?理想情况下,我想做这样的事情:

#!/bin/bash
set -x
(some magic command here...) > /tmp/mylog
echo "test"
Run Code Online (Sandbox Code Playgroud)

得到了

+ echo test
test
Run Code Online (Sandbox Code Playgroud)

在/ tmp/mylog中输出,而不是在stdout中输出.

bash io-redirection

35
推荐指数
2
解决办法
4万
查看次数

`set -x` 导致 bash 打印到哪里?

如果我set -x在我的 bash 会话(v4.1.2(2) - CentOS 6.10)中,我得到:

$ ls /root
+ ls --color=auto /root
ls: cannot open directory /root: Permission denied
Run Code Online (Sandbox Code Playgroud)

太好了,它回显了我运行并打印出终端的命令。这是预期的。现在,如果我都重定向stdoutstderr到另一个文件。

$ ls /root  &> stuff.txt
+ ls --color=auto /root
Run Code Online (Sandbox Code Playgroud)

它仍然将命令打印到终端。

哪里set -x有bash的打印,如果它是不是stderr还是stdout

bash

4
推荐指数
1
解决办法
418
查看次数

标签 统计

bash ×3

io-redirection ×1

logging ×1

redirect ×1

shell ×1