验证 bash 脚本中的变量

验证 bash 脚本中的变量

下面的脚本工作正常,生成日志。

#!/bin/bash

dir_to_check='/root/file_path.txt'
CY=`date +"%Y"`   
TS=`date "+%Y-%m-%d"`
cmd="/$CY"

cat $dir_to_check | while read output
do
        find ${output}/$cmd -type d -mtime +30 >> /root/file_$TS
        for path in $(cat /root/file_$TS);
                do
        rm -rvf $path | tee -a /root/purge_$TS
        done
done

文件中的示例位置cat /root/file_path.txt,所有这些路径都有多个子目录,我们需要2022分别从名为去年目录和今年目录 2023 的目录中删除 30 天的旧数据。

/data/storage/
/hana/storage/
/SAP/storage/

这里的问题是从 1 月份开始,2022 文件夹中没有任何内容被删除。需要您的帮助才能将其删除。

帮助我验证数组中的变量,我想通过在上面的脚本中添加以下内容来添加当前年份和前一年的数组,如下所示。

PY=`date +%Y -d "-1 years"`
declare -a arr=("$cmd" "$cmd1")
value=21
cmd1="/$PY"


        find ${output}"${arr[@]}" -type d -mtime +30 >> /root/file_$TS       

                                                       

相反,将其视为错误。

在此输入图像描述

到目前为止我已经在下面尝试过了。

#!/bin/bash

dir_to_check='/root/file_path.txt'
CY=`date +"%Y"`
PY=`date +%Y -d "-1 years"`
value=21
olddays=`date  --date="21 days ago" +"%Y"`

TS=`date "+%Y-%m-%d"`
cmd="/$CY"
cmd1="/$PY"

cat $dir_to_check | while read output
do
  if [ $PY == $olddays  ];
then
      find ${output}"$cmd1" -type d -ctime +21 >> /root/file_$TS
    else
      find ${output}"$cmd" -type d -ctime +21 >> /root/file_$TS
  fi
done


for path in $(cat /root/file_$TS);
        do
    rm -rvf $path | tee -a /root/purge_$TS
done

相关内容