Opensource.comは11月21日(米国時間)、「Using control operators in the Bash shell|Opensource.com」において、bashにおいて複数のコマンドを1行のコマンドラインに記述する方法を紹介した。記事で紹介されている方法はbashに限らずsh、zsh、kshなどsh系の機能を備えたシェルでもtcshやcshといったcsh系シェルでも利用できる。

記事で紹介されている主な方法は次のとおり。

シンタックス 内容
command1; command2 command1を実行したあとでcommand2を実行する
command1 && command2 command1を実行し、返値が0だった場合はcommand2を実行する
command1 || command2 command1を実行し、返値が0ではなかった場合はcommand2を実行する

「;」はコマンドを順番に実行させることができ、「&&」は前に実行したコマンドが0で終わった場合に次の記述されたコマンドを実行するもの、「||」は前に実行したコマンドが0以外で終わった場合に次に記述されたコマンドを実行するといった処理になっている。「&&」と「||」を組み合わせるとコマンド実行の成否に従って処理を切り分けるといったことができる。

「&&」と「||」は組み合わせることが可能で、次のように記述するとcommand1が0で終わった場合はcommand2を、0以外で終わった場合はcommand3を実行させるといった動作が可能。

組み合わせた実行サンプル1

command1 && command2 || command3

記事ではさらに「;」を組み合わせた方法として次のような書き方が紹介されている。

組み合わせた実行サンプル2

command1; command2 && command3 || command4; command5
  • 「;」「&&」「||」の実行サンプル

    「;」「&&」「||」の実行サンプル

「&&」と「||」を使用するとコマンドの実行結果によって処理を切り分けることができるため、例えば、先に実行したコマンドが成功していないと実行しても意味がないコマンドなどが無駄に実行されるのと避けるといったことができる。