連続コマンド


13

1 ;つの行で2つのコマンドを結合すると、Bashは常に最初のコマンドが終了するまで待ってから2番目のコマンドを実行すると仮定するのは正しいですか?同様に、異なる行に2つの異なるコマンドを含むシェルスクリプトでは、Bashは常に1行目のコマンドが終了するまで待ってから2行目のコマンドを実行しますか?

この場合、最初のコマンドが終了するまで2番目のコマンドが待機しないように、1行またはスクリプトで2つのコマンドを実行する方法はありますか?

また、シェルスクリプト内の異なる行は、;または&&


回答:


25

正しい、スクリプト内のコマンドはデフォルトで順番に実行されます。

コマンドにサフィックス&(単一のアンパサンド)を付けることで、バックグラウンドでコマンドを実行できます。

別の行のコマンドは、;デフォルトで結合されたコマンドと同等です。シェルにゼロ以外の終了コード(set -e)で中止するように指示すると、スクリプトはすべてのコマンドがで結合されたかのように実行されます&&


2

2番目の質問に答えるに&は、バックグラウンドでコマンドを起動し、終了を待たずにスクリプトを続行するために使用できます。

commandA & commandB

(スクリプトの代わりに)インタラクティブターミナルでこれを実行するfgと、バックグラウンドコマンドをフォーカスに戻すかjobs、バックグラウンドタスクのリストを表示するために使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.