Reputation:
I want to redirect the output of a bash script to a file.
The script is:
#!/bin/bash
echo "recursive c"
for ((i=0;i<=20;i+=1)); do
time ./recursive
done
But if I run it like this:
script.sh >> temp.txt
only the output of ./recursive will be captured in the file.
I want to capture the output of time command in the file.
Upvotes: 3
Views: 5529
Reputation: 6861
I prefer the &>> method better, but this is a solution as well:
$ script.sh 2>&1 |tee -a temp.txt
Upvotes: 2
Reputation: 21515
Redirect STDERR
to STDOUT
:
script.sh >> temp.txt 2>&1
Or if using bash
4.0:
$ script.sh &>> temp.txt
(Thanks for the second form go to commenter ephemient. I can't verify as I have an earlier bash
.)
My tests were surprising:
$ time sleep 1 > /dev/null 2>&1
real 0m1.036s
user 0m0.002s
sys 0m0.032s
The problem is the redirection was included as part of the command to be timed. Here was the solution for this test:
$ (time sleep 1) > /dev/null 2>&1
I don't think this is part of your problem, but it seemed worth a mention.
Upvotes: 8