「単項演算子が予期されます」を抑制する

今更ですが、備忘録としてシェルスクリプトでWarningが出た時の対処方法です。

crontabはこんな感じでシェルを起動するようにする

# 環境名には「development、staging、production」を設定、設定しない場合はデフォルトで起動
0 1 * * * /var/www/bin/maintenace.sh 環境名

初めに書いたシェル

#! /bin/sh

#引数を取得
env=$1

#引数なし
PHP_PATH=/usr/bin/php

#環境により設定を分ける
if [ $env == "development" ] ; then
#php path
PHP_PATH=/usr/local/bin/php
fi
if [ $env == "staging" ] ; then
#php path
PHP_PATH=/usr/local/bin/php
fi
if [ $env == "production" ] ; then
#php path
PHP_PATH=/usr/local/bin/php
fi

# データメンテナンスバッチ
cd /var/www/
export FUEL_ENV=${env} ; $PHP_PATH oil r maintenace
exit;

引数なしで起動した場合に警告が出てしまいます。
理由はenv変数が空のためです。

maintenace.sh: 10 行: [: =: 単項演算子が予期されます
maintenace.sh: 14 行: [: =: 単項演算子が予期されます
maintenace.sh: 18 行: [: =: 単項演算子が予期されます

phpは実行していますが、Warningメッセージが気持ち悪いので警告がでないように修正しました。

#環境により設定を分ける
if [[ $env == "development" ]] ; then
#php path
PHP_PATH=/usr/local/bin/php
fi
if [[ $env == "staging" ]] ; then
#php path
PHP_PATH=/usr/local/bin/php
fi
if [[ $env == "production" ]] ; then
#php path
PHP_PATH=/usr/local/bin/php
fi

[[ ]]で囲むことによって 変数内が空でも文法エラーが表示されないようになります。
詳しくはこちらを参照しました。