Shell角本 在每月最後二天執行指定命令

2021-07-05 18:22:11 字數 942 閱讀 1143

昨天有個朋友在群裡問:只在每個月最後倒數兩日執行 一條命令?

他的理解是只執行一條命令,而不是指令碼。

我想想,好像還真找不出乙個命令可以完成這個操作,除非指令碼中的所有語句全部寫到一行裡。

但是我認為在實際的運維工作中能解決實際問題就可以,不用糾結於是一條命令還是指令碼。畢竟,寫入到計畫任務/etc/crontab中的執行一條命令和執行乙個指令碼,本質沒有什麼區別。

**部分:

#!/bin/bash

#取得當前日期的天數部分

today=`date +%d`

#取得本月最後一天的天數部分

last_first_day=`echo

$today | xargs -i{} date -d

'+1 month -{} day' +%d`

#取得本月倒數第二天的天數部分

last_second_day=`echo

$today | xargs -i{} date -d

'+1 month -{} day -1 day' +%d`

#通過比較當前日期和倒數第二天的天數部分還決定是否執行指定命令

if [ $today -ge $last_second_day ]; then

echo

"today is last two days of this month!"

else

echo

"today is not last two days of this month!"

fi

這裡沒有用上變數last_first_day(本月最後一天的天數部分) ,我只是列出來計算方法,備用。

然後將指令碼加入到 /etc/crontab中每天執行一次就可以了:

0 0 */1 * * root 角本名稱
更多linux資料請檢視:

shell逐行讀取每一列

在linux下用shell指令碼讀取mysql結果集各資料項的值,按行讀取sql結果,將sql執行結果讀取到shell變數中,然就可進行處理。方法一 while read a row doecho row 0 done echo select id name from student 方法二 whi...

shell 遍歷文字每一行

參考文章 shell指令碼 逐行處理文字檔案 這種方式處理時,如果在迴圈內操作全域性變數,超過迴圈作用域後,對全域性變數的操作就會失效。比如把每一行文字新增到乙個全域性陣列,在迴圈內陣列新增的元素是正常的,在迴圈外陣列的元素會恢復到迴圈之前的狀態 cat data.dat while read li...

shell讀取檔案每一行的方式

使用read命令讀取一行資料 while read myline doecho line myline done datafile.txt 使用read命令讀取一行資料 cat datafile.txt while read myline do echo line myline done 讀取一行資...