】コマンド——条件が成立したときコマンドを実行する本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、条件が成立したときコマンドを実行する「if」コマンドです。本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は条件が成立したときコマンドを実行する「if」コマンドです。指定した条件が成立したときコマンドを実行するforコマンドと組み合わせるコマンドの実行結果によって次のコマンドを実行するかどうか決めるifコマンドとは?「if」は、何らかの条件を指定して、その条件が真の時のみ処理を行うコマンドです。条件は「指定したコマンドの実行結果が真かどうか」で判定します。この判定には一般にtestコマンド(連載第221回、第222回)を使います。ifコマンドはbashの内部コマンドです。シェルスクリプト内で使用します。ifコマンドを使った一連の処理のことを「if文」と呼ぶことがあります。以下ではコマンドラインで使用する方法を紹介します。シェルスクリプトを書くに当たり、判定結果を確かめておきたい場合などに役立ちます。fi※条件が真の場合と偽の場合で実行するコマンドを変えたい場合は「else」を用いて以下のように記述する。シェルスクリプト内では「;」の位置で適宜改行すると読みやすくなる。fi目次に戻るifの主なオプションifコマンドにはオプションはありません。「指定したテキストファイルに特定の文字列が含まれていたら編集する」という処理を考えてみましょう。ifコマンドを使わずに処理するなら、まずgrepコマンド(第9回)などを用いて文字列の有無を確認し、実行結果を見て編集するかどうかを決めるでしょう。fi」のようになります。grepコマンドの「-q」オプションは、実行結果を画面に表示しないというオプションです。viはテキストエディタです(Linux再入門第18回以降)。画面1では、実行イメージを見るために、viコマンドの代わりにheadコマンド(第3回)でファイルの冒頭部分を出力しています。実行」という処理を試したところ目次に戻るforコマンドと組み合わせるifコマンドをforコマンド(第215回)と組み合わせると、複数のファイルを対象とした処理を実行しやすくなります。複数のファイルに対してgrepコマンドで文字列の有無をチェックして、指定した文字列があった場合のみviコマンドを起動するといった場合です。読みやすいよう、以下のように適宜改行を入れることもできます。シェルスクリプト内ではこのまま動作します。コマンドラインでは2行目以降から「>」というプロンプトに続いて、コマンドを手入力します。fi#(if文の終わり)done#(for文の終わり)画面2では、「/etc/*」に対して、「PS1」という文字列が含まれているファイルを、viコマンドで編集しようとしています。画面の最後、doneの後で[Enter]キーを押すと、コマンドの実行が始まります。forとifを組み合わせて実行しようとしているところ実際に「/etc/*」を指定した場合、ここにはディレクトリが含まれているため、grepコマンドの「ディレクトリです」というエラーメッセージが画面に表示されてしまいます。コマンドラインで実行する分には困りませんが、「ディレクトリではない(通常のファイルである)」「編集権限がある」といった条件を指定したい場合は、testコマンド(第221回)と組み合わせます。複数の条件を指定する場合は、さらに論理演算子も使います。コマンド2」と書きます。コマンド2」のようにします。対象のファイルが通常ファイルであり(testコマンドの-fオプションで確認)、さらに自分に編集権限のあるファイルに限定した(-wオプションで確認)としましょう。その上で、grepコマンドを使って文字列の有無を確認し、viコマンドを起動するのであれば以下のようになります。done画面3では、実行イメージを見るために、通常ファイル(-fオプションで確認)、かつ、閲覧権限のあるファイル(-rオプションで確認)に限定した上で、headコマンドで表示しています(※1)。testコマンドの代わりに[コマンドを使って記述すると、次のようになる。目次に戻るコマンドの実行結果によって次のコマンドを実行するかどうか決めるifコマンドを使わずに、&&演算子で短く記述できる場合があります。コマンド2」とした方が簡単です。「&&」は論理演算子ですが、コマンド1とコマンド2の両方が真であることを判定するとき、実際にはコマンド1が成功したときのみコマンド2の実行を試みます。このため「コマンド1が成功したらコマンド2を実行」のように活用できるのです。コマンド2」のように書きます。「||」は、コマンド1かコマンド2のいずれかが真であることを判定する際、コマンド1が失敗したときのみコマンド2を試みます。コマンド2」は真なので、コマンド2を実行する必要がなく、このような動作になります。めぐみ)PC-9801NからのDOSユーザー。toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。