我遇到了一个轻微的错误,即每次发言都没有导致我的程序崩溃,但它会让它爬行。它一直给我错误:
#!/bin/bash
# Usage: ./s3DeleteByDate "bucketname" "2m"
aws s3 ls s3://$1 | grep " DIR " -v | while read -r line;
do
createDate=$(echo "$line" | awk '{print $1" "$2}')
createDate=`date -d "%Y-%m-%d %H:%M" "$createDate" +%s`
olderThan=`date -d $2 +%s`
if [[ $createDate -lt $olderThan ]]
then
fileName=`echo $line|awk {'print $4'}`
if [[ $fileName != "" ]]
then
aws s3 rm s3://$1"$fileName" --exclude "*" --include "*.tmp"
fi
fi
done;
它似乎真正影响了它可以处理的速度,因为我计划删除数十万个日志文件。这是有问题的程序:
id=\"(CALLERID|GR_BUS|label)\"(\s*value=\"(\S*)\")?
答案 0 :(得分:1)
此行中有两个格式说明符:
createDate=`date -d "%Y-%m-%d %H:%M" "$createDate" +%s`
据推测,您打算使用以下任一方式格式化$createDate
:
createDate=`date -d "$createDate" +"%Y-%m-%d %H:%M"`
或:
createDate=`date -d "$createDate" +%s`
我的钱在第二个,因为您稍后在if
中使用数字比较。
答案 1 :(得分:0)
我将第7行更改为:date +%s -d" $ createDate"。
这是有效的,因为它是一个GNU日期,它不允许您指定日期的输入格式。这可以解决错误。