をファイルに追加:はstdoutにエコー、私はこれを持って
echo "all done creating tables" >> ${SUMAN_DEBUG_LOG_PATH}
が、それだけでstdoutに書き込み、ファイルにはない追加する必要があります。 stdoutに書き込んで同じbash行のファイルに追加するにはどうしたらいいですか?
をファイルに追加:はstdoutにエコー、私はこれを持って
echo "all done creating tables" >> ${SUMAN_DEBUG_LOG_PATH}
が、それだけでstdoutに書き込み、ファイルにはない追加する必要があります。 stdoutに書き込んで同じbash行のファイルに追加するにはどうしたらいいですか?
何かを使用しますか?
echo "all done creating tables" | tee -a "${SUMAN_DEBUG_LOG_PATH}"
は、このようなtee
コマンド
$ echo hi | tee -a foo.txt
hi
$ cat foo.txt
hi
ああ、私は尋ねることを忘れて、これは、TTYとファイルの両方にstderrを送信するのだろうか? –
通常のティーが使用されている、しかしちょうどbashの使用バージョン:ファイルである、stdoutに書き込みを行っている
#!/bin/bash
function mytee(){
fn=$1
shift
IFS= read -r LINE
printf '%s\n' "$LINE"
printf '%s\n' "$LINE" >> "$fn"
}
SUMAN_DEBUG_LOG_PATH=/tmp/abc
echo "all done creating tables" | mytee "${SUMAN_DEBUG_LOG_PATH}"
これは純粋な 'bash'でそれを行うことは本当にあなたを助けるものではありません。とにかくパイプのRHSのために新しいプロセスをフォークする必要があるので、そのプロセスで 'bash'ではなく' tee'を実行することもできます。 – chepner
これは、発生するログの量によって異なります。これがたくさんある場合は、exec >>()も機能しますが、実際は余分なフォークです。それはすべて、ティーが利用可能かどうかにかかっています。しかし、あなたはまだbashでこれを行うことができますが、データの接頭辞とマングリングはできません。 – CowboyTim
改善のための@chepner thxしかし、windowsyファイル名の "$ fn"にはfn = "$ 1"も必要ですか? :-) – CowboyTim
は –
OKうーん、私は私がどのように..あなたは正しいことができますねパイプstdoutを "コンソール" /現在のTTYにもしますか?あなたは私が尋ねているものを知っている:) –