2009-02-25 27 views
3

bashスクリプトの出力をファイルにリダイレクトしたい。Linux端末の出力リダイレクト

#!/bin/bash 
echo "recursive c" 
for ((i=0;i<=20;i+=1)); do 
time ./recursive 
done 

しかし、私はこのようにそれを実行する場合:

スクリプトがある

script.sh >> temp.txt 

./recursiveの出力だけがファイルにキャプチャされます。

ファイルのtimeコマンドの出力をキャプチャしたいと思います。

script.sh >> temp.txt 2>&1 

場合やbash 4.0を使用して::STDOUT

答えて

8

リダイレクトSTDERR

$ 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 

私はこれがあなたの問題の一部だとは思わないが、言及する価値があるようだ。

+0

新しいbashの4.0で: 'script.sh&>> temp.txt'は、上記と同じように行います。 :) – ephemient

2

私はより良い& >>方法を好むが、これは、同様のソリューションです:

$ script.sh 2>&1 |tee -a temp.txt 
+0

ねえ、私も。コンソールで出力を見ることができ、ファイル内に出力することもできます。 – Raj

関連する問題