コマンドの直列処理の&&と;

コマンドの直列処理についてまとめてみる。Linux上で、コマンドや自作プログラムを2つ直列に実行したいことがある。調べたり、AIに聞いたりすると&&や;で繋げて書けばよいと教えてくれる。どう違うのか実際に調べて実行してみた。CRONなどで設定する場合、理解して使い分けましょう。

直列処理の試験

<?php
echo "test0"."\n";
exit(0);

test0.php

<?php
echo "test1"."\n";
exit(1);

test1.php

exit 0 は正常終了であり、exit 0以外は異常終了です。

;は強制的に直列処理

$ php test0.php ; date
test0
Wed Oct 15 17:59:16 JST 2025

$ php test1.php ; date
test0
Wed Oct 15 18:01:11 JST 2025

&&は処理が正常終了した場合のみ次が実行

$ php test1.php && date
test1
Wed Oct 15 18:00:37 JST 2025

$ php test1.php && date
test1

AIによる情報

&&;は、Linuxなどで複数のコマンドを連続して実行するために使われますが、&&は最初のコマンドが正常に終了した場合のみ次のコマンドが実行されるのに対し、;は最初のコマンドの成否に関わらず、常に次のコマンドが実行されます。 

;(セミコロン)

  • 意味: 複数のコマンドを左から右へ順次実行します。
  • 挙動: 最初のコマンドが失敗しても、次のコマンドは実行されます。
  • 例: command1; command2 

&&(アンド)

  • 意味: 最初のコマンドが正常に終了(終了ステータスが0)した場合にのみ、次のコマンドを実行します。
  • 挙動: 最初のコマンドが失敗した場合、後続のコマンドは実行されません。
  • 例: command1 && command2