0
を書き込む前にはbashで出力を収集:私はbashスクリプトでファイルを解析し、このような出力形式を用意しております私は次の問題を持っている
:$場合
echo "Evaluation of data from $date" > $outPut
printf "\n%s\t\t\t%s\t\t%s\n" "column1" "column2" "column3" >> $outPut
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' - >> $outPut
cat $file | \
while read i;
do
...
printf "..."
done >> $outPut
それは正常に動作しますoutPutはファイルです。しかし、プログラムのパラメータに応じて、$ outputは/ dev/stdoutにすることができます。
以下
bash someprogram.bash --tostdout | less
にIパイプの出力を以下には、ゼロ出力ですぐに始まる場合。しばらくするとすべてが見えますが、私がそうするとGが機能しなくなり、CTRL-Cで停止することができます。私はそれをパイプしない場合、出力が正常に動作します。
私が欲しいのは、出力を収集した後すぐにすべてを書き込む機能と、プログラムの終了を待つパイプです。
「/ dev/stdout」とは何を意味していますか?あなたは '/ dev/stdout'にどのように設定していますか?単に出力するのはなぜですか? – 123
ファイルパラメータが設定されていない場合、私は 'outPut =/dev/stdout'を実行します – mirokai
あなたはおそらくあなたのスクリプトでバッファリングを調整したいでしょう。 https://linux.die.net/man/1/stdbuf –