我想将 bash 脚本的输出重定向到一个文件。
脚本是:
#!/bin/bash
echo "recursive c"
for ((i=0;i<=20;i+=1)); do
time ./recursive
done
但是如果我这样运行它:
script.sh >> temp.txt
文件中只会捕获 ./recursive 的输出。
我想在文件中捕获时间命令的输出。
最佳答案
将 STDERR
重定向到 STDOUT
:
script.sh >> temp.txt 2>&1
或者如果使用 bash
4.0:
$ script.sh &>> temp.txt
(感谢评论者 ephemient 提供第二种形式。我无法验证,因为我有一个较早的 bash
。)
我的测试令人惊讶:
$ time sleep 1 > /dev/null 2>&1
real 0m1.036s
user 0m0.002s
sys 0m0.032s
问题是重定向作为要计时的命令的一部分包含在内。这是此测试的解决方案:
$ (time sleep 1) > /dev/null 2>&1
我认为这不是您问题的一部分,但似乎值得一提。
关于Linux终端输出重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588144/