【发布时间】:2018-10-20 22:13:53
【问题描述】:
我有一个脚本,可以在文件夹中查找文件,如果它们超过 7 天,则将其删除。不过,我有一个小问题。
#!/bin/bash
BACKUPDIR=/home/vagrant/script/aerospike_backups
TIMESTAMP=$(date +%Y-%m-%d)
LOGPATH=/tmp/logs.txt
ADMINACC=email@example.com
EMEIL=rybka@gl.com
#Let's check existing backups, and if it's older than 7 days delete
find_old () {
if [ -z $(find $BACKUPDIR -mtime +7 -print ) ]
then
return 10
else
find $BACKUPDIR -mtime +7 -delete && echo "Backups deleted at $HOSTNAME on $TIMESTAMP" > $LOGPATH
fi
}
如果我从终端使用 ./scriptname 使用空 $BACKUPDIR 执行此脚本,则键入 echo $? shell 按预期输出 10 个代码,因为没有 7 天以前的文件或根本没有文件。
但在我添加更多 if 条件后
if [[ $(find_old | echo $?) -gt 0 ]]
then
echo "Script return error code"
else
echo "all is ok"
脚本给了我输出all is ok,但它真的不应该吗?怎么了?
【问题讨论】:
-
这可能会有所帮助:How to debug a bash script?
-
你可以在shellcheck检查你的脚本