こんにちはフロントエンドエンジニアのまさにょんです!
今回は、ShellScriptやコマンドで見る、&& と || と ; と | それぞれの意味と使い方についてまとめて解説していきます。
目次
&& と || と ; と | それぞれの意味と使い方
「&&」: 複数コマンドをAND演算で実行する
bashシェルスクリプト上では &&
はAND制御演算子です。
指定した左辺のコマンド1が成功したら、右辺のコマンド2を実行してくれます。
次のコマンドでは、Testディレクトリを作成して、Testディレクトリに移動します。
mkdir Test && cd Test
「 ; 」: 成功・失敗に関わらず、コマンドを連続実行する
&&
と ;
は、コマンドを連続で実行してくれる点では、同じ機能ですが、
&&が成功したら、続くコマンドを実行するのに対して、「 ; 」は成功・失敗に関わらず、コマンドを連続実行します。
# ; は成功・失敗に関わらず、コマンドを連続実行する
mkdi Test; cd Test
# && は成功したら、続くコマンドを実行する
mkdi Test && cd Test
「 || 」: 複数コマンドをOR演算で実行する
bashシェルスクリプト上では||
はOR制御演算子です。
指定した左辺のコマンド1が失敗した時に、それに対処する形で右辺のコマンド2を実行できるので、
主にエラー処理を行なう時に使えます。
mkdi Test || echo 'ディレクトリ作成失敗'
「 | 」(パイプ): コマンドの実行結果を渡して、続く処理を実行する
|
(パイプ)とは、Linuxコマンドを使って標準出力された内容(実行結果)を次のコマンドへ橋渡しするために使われるコマンドです。
また、パイプの正式名称は「パイプライン」で、パイプを使った処理のことを「パイプライン処理」と呼ばれます。
次のように、左辺のコマンドの出力(実行結果)を右辺のコマンドの入力に渡して、処理をすることができます。
ls -al | tee file.txt && open file.txt
teeコマンドは、標準入力からデータを受け取り、それをファイルに書き込みながら同時に標準出力に出力するコマンドです。
上記のSampleCommandでは、次のような処理をしています。
ls -al
で隠しファイルも含むすべてのディレクトリ・ファイル情報の一覧を出力する。|
パイプラインでls -al
の出力結果(実行結果)をteeコマンドに渡す。tee file.txt
で、file.txt に保存しながら同時に標準出力をする。- それらの処理が、成功したらfile.txtを開く。
&& と || と ; と | の使い方まとめ
&& と || と ; と | の使い方を表にまとめると次のとおりです。
シンタックス(構文) | 内容 |
---|---|
command1 && command2 | command1を実行し、返値が0だった場合はcommand2を実行する。 |
command1; command2 | command1を実行したあとでcommand2を実行する。 |
command1 || command2 | command1を実行し、返値が0ではなかった場合はcommand2を実行する。 |
command1 | command2 | | (パイプ)で、command1の実行結果をcommand2に渡す。 |
プログラミング学習・エンジニア転職関連の情報
自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)
『GEEK JOBキャンプ』スピード転職コース(無料)
【IT道場】入校時0円! 就職目的プログラミングスクール
エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】
『techgym』 (Python特化・無料)
参考・引用
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!