次のコマンドを実行する前に、両方bash
をsh
実行し、コマンドが終了するのを待ちますか?
コマンドが次々に実行されることを期待したときにいくつかのスクリプトを実行しましたが(つまり、異なる行のコマンド)、そのようには機能しなかったようです。正確なスクリプトをすぐに思い出せませんが、コマンドを&&
記号で区切りました。
方法のスクリプトから行を切り取って端末に貼り付ける場合、前の行が次の行の前に終了することが保証されていますか?
パイプ|
またはバックグラウンドジョブ&
がある場合、評価は非順次である可能性があります。そうでない場合は、次々に評価されます。
ただし、出力が異なるストリームにある場合、それらは順不同でコンソールに送られる可能性があります。たとえば、STDOUTとSTDERRの両方に印刷する場合、各ストリーム内の行は順番になりますが、コードで印刷が行われた順序を反映しない方法でインターリーブされる可能性があります。
はい。コマンドがフォアグラウンドで実行されている限り。つまり、コマンドラインの最後に「&」文字はありません。
あなたの「&&」の中に忍び込んだスペースかもしれません
はい、順番に実行されます...しかし、&を使用してバックグラウンドでジョブを実行すると、期待どおりに機能しない場合があります。それらのジョブはバックグラウンドで実行されるためです。
一般的な場合、はい。コマンドが実行され、コマンドが終了するとその戻り値が使用可能になり、次のコマンドが実行されます。
次のようなをジョブに追加することにより、シェルにバックグラウンドジョブを開始するように指示できます&
。
somecommand &
anothercommand
この場合、somecommand
はバックグラウンドで実行され、完了anothercommand
する前に開始(および終了)する場合がありsomecommand
ます。