1

次のコマンドを実行する前に、両方bashsh実行し、コマンドが終了するのを待ちますか?

コマンドが次々に実行されることを期待したときにいくつかのスクリプトを実行しましたが(つまり、異なる行のコマンド)、そのようには機能しなかったようです。正確なスクリプトをすぐに思い出せませんが、コマンドを&&記号で区切りました。

方法のスクリプトから行を切り取って端末に貼り付ける場合、前の行が次の行の前に終了することが保証されていますか?

4

4 に答える 4

5

パイプ|またはバックグラウンドジョブ&がある場合、評価は非順次である可能性があります。そうでない場合は、次々に評価されます。

ただし、出力が異なるストリームにある場合、それらは順不同でコンソールに送られる可能性があります。たとえば、STDOUTとSTDERRの両方に印刷する場合、各ストリーム内の行は順番になりますが、コードで印刷が行われた順序を反映しない方法でインターリーブされる可能性があります。

于 2013-01-29T05:22:22.530 に答える
2

はい。コマンドがフォアグラウンドで実行されている限り。つまり、コマンドラインの最後に「&」文字はありません。

あなたの「&&」の中に忍び込んだスペースかもしれません

于 2013-01-29T05:20:53.530 に答える
2

はい、順番に実行されます...しかし、&を使用してバックグラウンドでジョブを実行すると、期待どおりに機能しない場合があります。それらのジョブはバックグラウンドで実行されるためです。

于 2013-01-29T05:21:56.290 に答える
1

一般的な場合、はい。コマンドが実行され、コマンドが終了するとその戻り値が使用可能になり、次のコマンドが実行されます。

次のようなをジョブに追加することにより、シェルにバックグラウンドジョブを開始するように指示できます&

somecommand &
anothercommand

この場合、somecommandはバックグラウンドで実行され、完了anothercommandする前に開始(および終了)する場合がありsomecommandます。

于 2013-01-29T05:20:35.760 に答える