shファイルを呼んだときのカレントディレクトリ

すごくはまってしまった。。

シェルスクリプトで 日付入りファイル名のzipファイルの中から1週間前以前のものを削除する、シェルスクリプトを作って、 内製のスケジューラからそのshを呼び出すということをしていたのだけど、

なぜかファイルが消えず、sh単体で動かしてたらちゃんと動いてて、 パーミッションを疑ってたけど、違ったー。

DE_DATE=`date -d '7 day ago' +%Y%m%d`
for file in `find . -name "HOGE_*.zip"`
do
    FILE_DATE=`expr "${file}" : ".*\([0-9]\{8\}\)"`
    if [ -n "${FILE_DATE}" ] && [ ${FILE_DATE} -lt ${DE_DATE} ]; then
        rm -f ${file}
    fi
done

shの中身は↑の通りだったのだけど、findでファイルがまったく引っかかってなかった。

なぜかというと単純にカレントディレクトリが、想定したディレクトリではなかった。

find . -name "HOGE_*.zip"

↑で、. で指定してるから、カレントディレクトリから名前検索してくれてるんだけど、 この.がshファイルからみたものかと思ってたんだけど、そうではなくて、

cdでディレクトリ移動してからだったらふつうに出来た。

shというより、スケジューラ側の話しになるのかなー…。