非ブロック bash コマンド

非ブロック bash コマンド

以下を含むbashスクリプトがあるとしましょう。

#!/bin/sh
gedit
rm *.temp

を使用して実行するとsh ./test.shポップアップgeditが表示されますが、そのrm部分は閉じるまで実行されませんgedit

bashの実行をブロックしないgeditように、スクリプトを閉じずに実行を続けたいと思います。gedit

私が提示した例は単なる例です(rm実際の状況では最初の例は機能しません)。

ベストアンサー1

あなたが探している用語は「バックグラウンド」タスクと呼ばれます。シェルまたはスクリプトでコマンドを実行するときは、最後にフラグを追加してバックグラウンドで送信し、新しいコマンドまたはスクリプトの残りの部分を引き続き実行できます。ほとんどのシェル(含む)ではshこれが&文字です。

#!/bin/sh
gedit &
rm ./*.temp

geditこれにより、シェルは終了を待たずにrm同時にgedit実行されます。

「ブロック」という用語は通常、入出力ストリーム(通常はファイルまたはデバイス)に関連付けられています。これは、あなたが使用するのと同じ意味を持つコンパイルされた言語でも使用されますが、bashや同様のシェルスクリプトでは、用語(および機能!)はかなり異なります。

おすすめ記事