今更ですが、備忘録としてシェルスクリプトで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
[[ ]]で囲むことによって 変数内が空でも文法エラーが表示されないようになります。
詳しくはこちらを参照しました。