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

ファイルの例の場所、これらすべてのパスには複数のサブディレクトリがあり、それぞれ昨年のディレクトリと今年のディレクトリ2023というディレクトリから30日前のデータを削除するcat /root/file_path.txt必要があります。2022

/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

ベストアンサー1

おすすめ記事