Bash 3.2で非ブロック読み取りを実行し、POSIX環境に移植することもできますか?
最新バージョンのbashではこれが機能しますread -r -d'' -t $TIMEOUT -N $NBYTES myvar
が、bash 3.2をサポートする必要があります。 bash 3.2は-N
存在せず、myvar
タイムアウト後も書き込まず、読み出しデータの一部が失われます。
dd
GNU固有のパラメータの使用を提案する他の答えを見ましたが、iflags
GNUがあるかどうかわからないため、うまくいきませんdd
。
私の目標は移植性なので、Python、Perlなどで書くのは好きではありませんが、可能でなければ書く必要があります。
コンテキストに応じて私が望むのは、script
出力をパイプにリダイレクトして実行することです。私のbashスクリプトは、パイプからデータを読み取って使用できるデータ量があれば、それを封筒に包み込み、出力します。これにより、消費者は複数の入力ストリームを多重化できます。正しく機能するには、待ち時間が短く、一度に1バイトではなく合理的なサイズのデータチャンクを処理できる必要があります。