FuelPHPのTasksクラスを実行するシェルスクリプトを組んでる時にこまった時のメモ。
crontabを利用してTasksクラスを定期実行するようにしたい。
crontabはこんな感じでシェルを起動するようにする
1 2 |
# 環境名には「development、staging、production」を設定、設定しない場合はデフォルトで起動 0 1 * * * /var/www/bin/maintenace.sh 環境名 |
初めに書いたシェル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#! /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変数が空のためです。
1 2 3 |
maintenace.sh: 10 行: [: =: 単項演算子が予期されます maintenace.sh: 14 行: [: =: 単項演算子が予期されます maintenace.sh: 18 行: [: =: 単項演算子が予期されます |
Tasksが動作していないかというと動作はしておりますが、なんか気持ち悪いので警告がでないように修正しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#環境により設定を分ける 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 |
[[ ]]で囲むことによって 変数内が空でも文法エラーが表示されないようになります。
詳しくはこちらを参照しました。
Comments are closed