Shellスクリプトでif文の使い方メモ

個人的によく使うif文の書き方をメモです。

使い方

if [ 条件 ]
then
  # 実行したいコマンド
elif [ 条件 ]
then
  # 実行したいコマンド
else
  # 実行したいコマンド
fi

elifが不要な場合はelifからの3行、elseが不要な場合はelseからの2行を削除してください。thenをよく忘れるので気をつけてください。

サンプル1

Shellスクリプトのコマンドラインオプション(数字)によって実行する内容を変えるサンプル。

$ cat example1.sh
#!/bin/sh
if [ "$1" -eq 10 ]
then
  echo aaa
else
  echo bbb
fi
$ ./example1.sh 10
aaa
$ ./example1.sh 20
bbb

-eq(equal)の他にも-ge(greater than or equal)-gt(greater than)-le(less than or equal)-lt(less than)-ne(not equal)なども使えます。

サンプル2

shellスクリプトのシンボリックリンクを作成して、ファイル名によって実行する内容を変えるサンプル。

$ cat example2.sh
#!/bin/sh
if [ `basename $0` = "exampleA.sh" ]
then
  echo AAA
else
  echo 222
fi
$ ln -s example2.sh exampleA.sh
$ ./example2.sh
222
$ ./exampleA.sh
AAA

関連記事

shellを使ったファイル名の一括リネーム
カレントディレクトリにある*.logファイルの拡張子を.txtに変更するサンプル 注 $ for i in *.log; do mv $i `basename -s .log $i`.txt; done 注 basenameコマンドに-sオプションを使うと末尾の文字列を削除できます。 ...

シェル(bash)のforループに関する覚え書き
シェル(bash)のforループに関する覚え書き forループ 使い方 $ for i in 1 aa 012; do echo $i; done 1 aa 012 1~100の数字でforループしたい場合 $ for i in {1..100} do echo $i; done 1 2 3 ... 以下、省略 ...

Shellのコマンドライン引数の扱い方
コマンドライン引数の取得(表示) $ cat sample1.sh #!/bin/sh echo 1st: $1 echo 2nd: $2 echo all: $@ $ ./sample1.sh aaa bbb ccc 1st: aaa 2nd: bbb all: aaa bbb ccc コマンドライン引数の個数 $ cat sample2.sh #!/bin/sh echo ...

Bashでファイル名から拡張子とそれ以外の部分を分離する簡単な方法
example.txtというファイル名から拡張子とそれ以外の部分で分離するサンプル $ full="example.txt" $ extension=${full##*.} $ filename=${full%.*} $ echo $extension txt $ echo $filename example /path/to/example.txtのようなフルパスからディレクトリ部...

シェル(bash)でスペースの代わりに改行区切りでforループする方法
シェル(bash)のforループを使うとスペース区切りの文字列でループしてコマンドを実行することができます。(参考:forループに関する覚え書き) 便利な機能ですがスペースではなく改行\nでループしたい場合もあるかと思います。そういう場合にはIFSを使ってdelimiterを変更するテクニックがあるそうです。 使い方 今回は次のようなテキストファイルを使って1行ずつコマンドを実...

Shellスクリプトでcase文の使い方メモ
bash(sh)でcase文を書くときの基本は次のような感じです。 case $変数 in パターン1) 実行したい内容1 ;; パターン2) 実行したい内容2 ;; esac ということで、case文でよく使われるパターンを2つほど紹介してみようと思います。 曜日ごとに異なる内容を実行したい場合(cronで便利です) case `...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です