为整个shell脚本指定一个输出文件和另一个错误文件?

时间:2014-09-16 08:33:52

标签: shell

我希望有一个文件output.txt来保存我的shell脚本的所有输出。同样,一个error.txt文件来保存我的shell脚本的所有错误。

我理解,从技术上讲,我可以通过手动将>>output.txt附加到每行打印出来的行来实现此目的。但是,我觉得很难看。我隐约记得像

这样的东西
#!/bin/sh
#$ -o ./output.txt
#$ -e ./error.txt

echo Hello World!

可能会奏效。但是,当我尝试它时,它在某种程度上不起作用。

那么,如何指定一个自动吸收所有输出的输出文件?

更新

此问题似乎与this one重复。然而,一个区别是我还希望将输出和错误分成两个单独的文件。

1 个答案:

答案 0 :(得分:2)

redirect all output in a bash script when using set -x所示,您可以使用此方法:

exec > log_file 2>&1

如果要为stdin和stderr指定不同的文件,请执行:

exec 2> log_error 1> log_output

测试

#!/bin/bash

exec 2> error 1> mylog
echo "hello this is this"
ls alsdjflask

我们得到......

$ ./a
$ cat mylog 
hello this is this
$ cat error 
ls: cannot access alsdjflask: No such file or directory