bashのスクリプトでif節やelif節を空にするとエラー

bashのスクリプトでifを使う時、thenfi間に何のコマンドも含んでいないスクリプトはエラーになってしまいます。

if [ $value = "abc" ]
then
  # 何もしない
fi

エラーの内容

bash: syntax error near unexpected token `fi'

何もしない分岐は削除すればいいだけですが、elif節やelse節での条件を簡略化したい場合など、何もしない分岐を作りたくなることもあるかなと思います。

そんな時はコロン:というBUILTIN COMMANDを使うと良いみたいです。

次のような感じで使います。

if [ $value = "abc" ]
then
  :
fi

elif節やelse節でも同様です。
困っている方は試してみてください。

関連記事

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

Shellスクリプトでif文の使い方メモ
個人的によく使うif文の書き方をメモです。 使い方 if [ 条件 ] then # 実行したいコマンド elif [ 条件 ] then # 実行したいコマンド else # 実行したいコマンド fi elifが不要な場合はelifからの3行、elseが不要な場合はelseからの2行を削除してください。thenをよく忘れるので気をつけてください。 ...

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

コメントを残す

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