我想在我的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
吗?谢谢
您可以使用此:
exec >> file
exec 2>&1
在bash脚本的开头。这会将stdout和stderr都附加到您的文件中。
您可以在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