曜日指定でcronを実行するシェル

一年くらい前に仕事で作ったシェルのメモ。
シェル内のコマンドはダミー。

要件

  • 毎月指定の曜日に実行する
  • 実行ログを吐かせる&実行前後のタイムスタンプも取る

実装

cronの記述

奇数月の二週目、午前3時に実行(cronでは曜日指定はしない)

crontab -e
0 3 8-14 1,3,5,7,9,11 * /work/hoge.sh

hoge.shの中身

当日が土曜日だったら、(開始時間→コマンド実行→終了時間→改行)の塊をログとして吐き出す

#!/bin/sh
#曜日判定処理
a=` date +%w`
if [ "$a" == "6" ] 
then
#日付の表示とコマンドの実行
{
date
hoge
wait
date
echo
} >> /work/hoge,log
fi

※おまけ

実装したコードをVScodeのshellcheckにかけたところ、「書き方が古い!」という警告が出たので、少し修正したのが↓のスクリプト。
でも、お客さんにスクリプト修正の話するタイミングが中々ないので、サーバ上は変更してない。(動いてるからヨシ)

shellcheck済みのhoge.sh
#!/bin/sh
#曜日判定処理
a=$(date +%w)
if [ "$a" = "6" ] 
then
#日付の表示とコマンドの実行
{
date
コマンドhoge
wait
date
echo
} >> /work/hoge.log
fi

shellcheckでエラーになったのは、3行目の`と4行目の==。
今は
“は()、==は=でいいらしい?

https://github.com/koalaman/shellcheck/wiki/SC2006
https://github.com/koalaman/shellcheck/wiki/SC3014