我目前的脚本是:
#!/bin/bash
#---------------------
# OPTIONS
#----------------------
DAYS_TO_KEEP=30
# 待删除目录
dirs[0]="/home/wwwroot/dir1"
dirs[1]="/home/wwwroot/dir2"
# 遍历
for dir in $dirs; do
  if [ "$DAYS_TO_KEEP" -gt 0 ] ; then
    echo "Deleting file older than $DAYS_TO_KEEP days"
    find $dir/* -mtime +$DAYS_TO_KEEP -exec rm {} \;
  fi
done
但是运行后并没有执行成功,也没报错什么的,,,如果单单运行:
find $dir/* -mtime +$DAYS_TO_KEEP -exec rm {} \;
这个,是可以成功的。。
求指点
找到问题了,循环那里应该这样写:
for dir in ${dirs[@]}; do
$dirs 并不能获取到完整的数组。
|  |      1Mohanson      2020-08-14 15:00:30 +08:00 ``` $ apt install tmpreaper ``` | 
|      2s609926202 OP @Mohanson 应该是数组定义和循环有问题,并不是删除语句不能成功。。 | 
|      3s609926202 OP 找到问题了,循环那里应该这样写: ``` for dir in ${dirs[@]}; do ``` | 
|  |      4calmzhu      2020-08-14 15:23:24 +08:00 数组遍历就不对 $ dirs[0]="/home/wwwroot/dir1" $ dirs[1]="/home/wwwroot/dir2" $ echo $dirs /home/wwwroot/dir1 $ echo ${dirs[*]} /home/wwwroot/dir1 /home/wwwroot/dir2 然后可以直接遍历的 for dir in dir1 dir2 dir3 do | 
|  |      5wangyzj      2020-08-14 15:23:38 +08:00 find /home -mtime +7 -exec rm {} \\; 尝试后面多加一个反斜线 | 
|      6webs      2020-08-16 10:03:30 +08:00 find 后面可以带多个目录 |