問題タブ [process-substitution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
37 参照

bash - bash で実行中のプロセスから行を読み取れません

プロセス置換を使用すると、コマンドの出力のすべての行を取得できます。

上記と同じ方法で、「wpa_supplicant」コマンドの stdout 出力を取得し、stderr を破棄します。しかし、画面には何も表示されません!

プロンプトで同じコマンドを入力すると、正常に出力されることを確認しました。

間違いは何ですか?どんな助けでも大歓迎です。

0 投票する
1 に答える
225 参照

linux - ジョブ制御による Bash プロセス置換のバックグラウンド化

20MiB の CSV ファイルのバッチを処理するスクリプトがあり、オプションで約 4MiB まで gzip 圧縮されています。何千ものファイルがあり、それぞれの処理には約 30 秒かかります。非圧縮ファイルまたは圧縮ファイルの読み取りと解凍は「ほぼ瞬時」であり、プロセスがプロセスレベルで並列化できることを強く示唆しています。実際、それは複雑な Ruby パイプラインを使用して行われていることです。ただし、bash を使用して Ruby コードをより小さな部分に分割しようとしています。ジョブ制御のために、私はこのbash関数を考え出しました

wait_until_job_availableこれにより、bash パイプラインをバックグラウンド化する前に、実行可能なジョブの最小数をオプションで指定して を呼び出すことができます(省略した場合は、マシンで使用可能なコアの数がデフォルトになります)。

だから私はそれを次のように使うかもしれません:

ご覧のとおり、これによりすべてのファイルが検索search_pathされ、コマンドに渡されますprocess_file。その際、私はプロセス置換を使用してファイルを cat するか、オンザフライでファイルを解凍します。入力ファイル名は、圧縮されていないファイルの内容を出力するプロセスに置き換えられ、出力ファイルは元のファイル名に「.out」が追加されたものになります。の呼び出しprocess_fileはバックグラウンド化され、ジョブ コントロールに送信されます。ダンディーに見えますよね?

ただし、一部のファイルが正しく処理されていないことに気付きました。

によって処理されると報告されたファイルは、 の別々の同時インスタンスであっても、process_file常に であると報告されることに気付きました。一方、ファイルを一時ファイルに個別にコピーまたは解凍し、一時ファイルの名前を に渡すと、正常に実行され、すべてのファイルが正しく処理されているように見えます。/dev/fd/63process_fileprocess_file

特にディスクに触れること (パフォーマンス) と、処理後に一時ファイルをクリーンアップ (削除) する必要があることに関して、一時ファイルの作成を避けたかったのです。この問題があると、それが妨げられます。置換されたプロセス パイプラインの疑似ファイルの名前にある種の競合状態があるかどうか、私は興味がありますか? それとも、私が誤解しているように見えるプロセスの代替またはジョブ制御について何かありますか?

参考までに、Ubuntu Server 14.04、linux 3.19.0-59 Bash 4.3.11 gzip 1.6 を使用しています。

0 投票する
1 に答える
1432 参照

bash - <() に相当する POSIX シェル

<(commands ...)bash/zsh では、出力動作をファイルとして行います。POSIX に相当するものは存在しますか?

0 投票する
1 に答える
491 参照

bash - プロセス置換でリダイレクトする方法は?

アクセス許可が制限されているファイルに標準エラーをリダイレクトしようとしました。これは私がしたことです:

アイデアは、標準エラーをプロセスにリダイレクトし、umask を変更して、もう一度ログ ファイルにリダイレクトすることでした。

しかし、うまくいきません。コマンドは停止し、 を押すと 141 で終了しreturnます。

Bash のマニュアルでは、マニュアルに「プロセス リスト」が定義されていません。

誰かが失敗を説明できますか?

0 投票する
1 に答える
892 参照

linux - 複数の入力を Ghostscript にパイプする

Ghostscript を使用して、URL からダウンロードされた 2 つの PDF ファイルを結合する 1 行の Linux コマンドを作成しようとしています。ただし、一時ファイルを作成したくありません(すべてメモリ内で行う必要があります)。

次のコマンドは機能していないようです (プロセス置換によってこれを達成しようとしました)。

このコマンドを実行すると、以下のエラーが表示されます。

2 つの入力 PDF のダウンロードが完了する前に、Ghostscript コマンドが実行されていると思われます。おそらく、これが発生するのを待つ方法があります。