2011-07-21 5 views
3

私はkshを使用しています。このリンクhttp://www.shelldorado.com/shelltips/advanced.html#redirには、stdout、stderr、および両方を3つの別々のファイルに保存する例があります。stdout、stderr、および両方を3つの別々のファイルに保存する

((./program 2>&1 1>&3 | tee ~/err.txt) 3>&1 1>&2 | tee ~/out.txt) > ~/mix.txt 2>&1 

私はそれを試してみましたが、私はエラーの下に取得しています:

ksh: syntax error: `(' unexpected 

してくださいアドバイスを。私にとって

+0

無料アドバイス:でも彼らは話をしているどのシェルを教えてくれない「高度なシェルのヒント」について話すのウェブサイトを使用しないでください。それらはすべて同じ構文をしているわけではなく、それを知らない人は高度なヒントを書く資格がありません。 – geoffspear

+0

これはkshでどのように達成できるのか教えていただけますか?それは本当に良いアドバイスです。 – Sachin

+0

私はそれを修正することができました。 2つのブラケットの間にスペースが必要であっただけです。したがって、次は が正しく動作しています:((./program.sh 2>&1 1>&3 | tee err.txt)3>&1 1>&2 | tee out.txt)> mix.txt 2>&1 – Sachin

答えて

2

かなりの作品:

$ ksh 
$ ps | grep "$$" 
6987 pts/6 00:00:00 ksh 
$ cat program.sh 
#!/bin/sh 

echo "err" 1>&2 
echo "out" 
$ ((./program.sh 2>&1 1>&3 | tee err.txt) 3>&1 1>&2 | tee out.txt) > mix.txt 2>&1 
$ cat out.txt 
out 
$ cat err.txt 
err 
$ cat mix.txt 
err 
out 
関連する問題