Linux/UNIXのシェルプロンプトでIF文のような分岐処理を行わせる方法
Pocket

仕事で、ちょっとした分岐処理をシェル上で行う必要があったので、ワンライナーで簡単にIF文のような処理が出来る方法について調べたので記述しておく。
以下のような書き方で、IF文のような処理を実現可能だ。

コマンド && TRUE || FALSE

つまり、「&&」以降はコマンドがTRUEの場合に、「||」以降はFALSEの場合に実行されるコマンドとなる。
実際に利用する例として、以下のような使い方を紹介する。

Sponsored Links

●ファイルに指定した文字列がない場合、追記を行う

grep "文字列" /追記したいファイル > /dev/null || echo "文字列" >> /追記したいファイル

20150206_000000

$ cat work/test/test3.txt
Line1
Line2
Line3
Line4
Line5
$ grep "Line1" work/test/test3.txt > /dev/null || echo "Line1" >> work/test/test3.txt
$ cat work/test/test3.txt
Line1
Line2
Line3
Line4
Line5
$ grep "Line7" work/test/test3.txt > /dev/null || echo "Line7" >> work/test/test3.txt
$ cat work/test/test3.txt
Line1
Line2
Line3
Line4
Line5
Line7

スクリプトとして記述する場合は普通にIF文を使えばよいが、例えば手順書などに記述する一行コマンドなのであれば、このやり方で代用してはどうだろうか?

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: Linux/UNIXでファイル・ディレクトリの存在確認をする | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。