
我目前的脚本是:
#!/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 并不能获取到完整的数组。
1 Mohanson 2020-08-14 15:00:30 +08:00 ``` $ apt install tmpreaper ``` |
2 s609926202 OP @Mohanson 应该是数组定义和循环有问题,并不是删除语句不能成功。。 |
3 s609926202 OP 找到问题了,循环那里应该这样写: ``` for dir in ${dirs[@]}; do ``` |
4 calmzhu 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 |
5 wangyzj 2020-08-14 15:23:38 +08:00 find /home -mtime +7 -exec rm {} \\; 尝试后面多加一个反斜线 |
6 webs 2020-08-16 10:03:30 +08:00 find 后面可以带多个目录 |