Linux bash - podmínky IF - den/týden je sudý/lichý a dle rozdílu mezi daty
V následujícím obsahu si uvedeme příklady, jak napsat shell skript pro linux bash s podmínkami, kdy se ověřuje zda je den/týden lichý či sudý a také zda je rozdíl mezi daty vetší než x dnů.
Podmínka zda je den lichý nebo sudý
# daily backup
# only if day is even
day=$(date +%d)
if [ $((10#${day}%2)) -eq 0 ];then
echo 'date is even - backup now'
else
echo 'date is odd - no backup now'
fi
Podmínka zda je týden lichý nebo sudý
# weekly backup
# only if week is even
week=`date +"%V"`
if [ $(($week%2)) -eq 0 ];then
echo 'week is even - backup now'
else
echo 'week is odd - no backup now'
fi
Podmínka zda rozdíl mezi daty větší než 10 dnů
# backup by diff between two dates
# only diff is bigger than 10 days
datePast='20221009'
dateNow=$(date '+%y%m%d')
let diff=(`date +%s -d $dateNow`-`date +%s -d $datePast`)/86400
echo $diff
if [ diff > 10 ];then
echo 'bigger than 10 - backup now'
else
echo 'less than 10 - no backup now'
fi
Chyby
Při porovnání hodnoty week=`date +"%V"` se můžeme setkat s chybou
line 13: 08: value too great for base (error token is "08")
Řešením je odebrat úvodní nulu
week=${week#0}
Příklady je možné najít na githubu.