Bashでマルチスレッド待機を実現する(ただし、非同期

Bashで、マルチスレッドを実現する方法は、簡単で、コマンドの後ろに &をつければ、それがスレッドとして実行される。
デフォルトのファイルマネージャで、ホームフォルダを開くためには、下記のようにする。

xdg-open “${HOME} &

&を付けなければ、ファイルマネージャを終了させるまで、次の処理には行かない。
しかし、スクリプトの中で、全部のコマンドに &を付けると、全部が実行されてしまう。

Bashでのグループ化した処理を、マルチスレッドにしたい

全部のコマンドが逐次実行されてしまうのが、困る時もある。
この一連の処理と、この一連の処理は、別に逐次実行したい時、だ。
スクリプト化し、別にスレッド化する方法もあるかと思うが、もっと簡単な方法でできたので、公開することにする。

zenity --warning --text='スレッド1' && \
	(xdg-open "${HOME}"; \
	xdg-open "${HOME}/Downloads") &

zenity --warning --text='スレッド2' && (pluma; kcalc) &

それはこんな感じ。
zenityは、GUIアラートを出すコマンドだが、分かればなんでもよい。
「スレッド1」で、「OK」ボタンを押して終了になれば、ファイルマネージャで、ホームフォルダと、ダウンロードフォルダが開く。
「スレッド2」で、「OK」ボタンを押して終了になれば、plumaというテキストエディタと、 kcalcという電卓が開かれる。

特定の処理群を、スレッド化する方法としては、わかりやすく、最善の方法の1つではなかろうか。

まとめ

Bashには、いろいろな方法があるかと思うので、いろいろと模索するのは、ちょっと楽しい。
特定の処理群を、マルチスレッド化できたので、よしよし、とする。