我希望有一个文件output.txt
来保存我的shell脚本的所有输出。同样,一个error.txt
文件来保存我的shell脚本的所有错误。
我理解,从技术上讲,我可以通过手动将>>output.txt
附加到每行打印出来的行来实现此目的。但是,我觉得很难看。我隐约记得像
#!/bin/sh
#$ -o ./output.txt
#$ -e ./error.txt
echo Hello World!
可能会奏效。但是,当我尝试它时,它在某种程度上不起作用。
那么,如何指定一个自动吸收所有输出的输出文件?
此问题似乎与this one重复。然而,一个区别是我还希望将输出和错误分成两个单独的文件。
答案 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