shell之for+if巢狀迴圈結構
阿新 • • 發佈:2022-05-06
shell之for+if巢狀迴圈結構
學習Python之後,對shell 的for和if迴圈老是混淆,編寫shell指令碼加深鞏固一下
主要實現兩個功能:建立批量目錄然後根據時間在每個目錄建立年月日日誌檔案,根據需求刪除三個月前的日誌檔案
批量建立目錄和日誌檔案
#!/bin/bash cd /var/log/cdmone && mkdir -p bmr dt server hcs smartx hcs storage winstack dir=$(ls /var/log/cdmone) for i in ${dir};do for j in {01..30};do#touch /var/log/cdmone/${i}/`date +'%Y-%m'-${j}.log` for x in {01..12};do touch /var/log/cdmone/${i}/`date +%Y-${x}-${j}.log` done done done
#ls /var/log/cdmone
bmr dt server hcs smartx hcs storage winstack
刪除指定日期的日誌檔案
這裡沒考慮天數(30,31),而是按照月份進行日誌處理刪除,保留當前日期三個月內的日誌
#!/bin/bash cd/var/log/cdmone/wise Month=$(date +'%Y-%m-%d'|awk -F[-] '{print $2}') file=$(echo "${Month} - 4" |bc) if [ ${file} -eq 0 ];then file=01 elif [ ${file} -gt 0 ];then file=0`echo "${file} + 1" |bc` elif [ ${file} -lt 0 ];then file=$( echo "${file} + 15 - 2" |bc) fi logfile=$(date +%Y-${file}-*.log) find/var/log/cdmone/wise -type f -name ${logfile} |xargs rm -f
驗證
# date +'%Y%m%d' #bash rm_file.sh #find . -type f -name 2022-02-* ./winstack/2022-02-13.log #調整系統時間進行驗證 # date -s '-30 day' # date +'%Y%m%d' #bash rm_file.sh #find . -type f -name 2022-01-*