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

问题描述 投票:1回答:2

我想在我的bash脚本中添加一个命令,将所有stderr和stdout定向到特定文件。从this和许多其他来源来看,我知道从命令行可以使用:

/path/to/script.sh >> log_file 2>> err_file

但是,我想要脚本中的某些东西,类似于这些slurm标志:

#!/bin/bash
#SBATCH -o slurm.stdout.txt # Standard output log
#SBATCH -e slurm.stderr.txt # Standard error log

<code>

是否有一种方法可以直接从脚本内进行输出,或者每次调用脚本时都需要使用>> log_file 2>> err_file吗?谢谢

bash stdout stderr
2个回答
2
投票

您可以使用此:

exec >> file
exec 2>&1

在bash脚本的开头。这会将stdout和stderr都附加到您的文件中。


0
投票

您可以在bash脚本的开头使用它:

# Redirected Output
exec > log_file 2> err_file

如果文件确实存在,则将其截断为零大小。如果您想附加,请使用此:

# Appending Redirected Output
exec >> log_file 2>> err_file

如果要将stdout和stderr都重定向到同一文件,则可以使用:

# Redirected Output
exec &> log_file
# This is semantically equivalent to
exec > log_file 2>&1

如果您想附加,请使用此:

# Appending Redirected Output
exec >> log_file 2>&1
© www.soinside.com 2019 - 2024. All rights reserved.