平日だけ◯◯◯◯したい・・・みたいなことがあったのですが
意外とまとまった記事が見つからなかったのでまとめました。
検証環境
WindowsからSSH接続した Mac Pro
nkfコマンドをインストールする
brew install nkf
cronを設定する
月曜〜金曜に「祝日かどうかをチェックするシェル」が実行されるよう設定する
0 10 * * 1-5 /bin/sh check_syukujitsu.sh
祝日かどうかをチェックするシェルの中身
check_syukujitsu.sh
#!/bin/sh
curl -o holidays.csv "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"
# 改行コードをLFに変更する
nkf -Lu --overwrite holidays.csv
# 現在が祝日ではなければ workday
if ! grep -q `date "+%Y/%-m/%-d"`, "holidays.csv"; then echo "workday"; fi
文字コードと改行コードの変更が必要
curl で落とした csvファイルの文字コードが UTF-8
ではない(Shift_JIS
のためか)、grep でうまく判定できませんでした。
以下のコマンドで文字コードを変更しました。
nkf -w --overwrite holidays.csv
ところが、これだけでは判定できませんでした。
ハッ..!改行コードも変えないといけないのでは?と思い
以下の通り、改行コードを LF
へ変換すると、判定できるようになりました。
nkf -Lu --overwrite holidays.csv
このコマンドを実行するだけで文字コードも UTF-8
に変換してくれるので、
結果的に上記コマンドのみに置き換えました。