我正在尝试使用bash编写脚本来检查我的rdiff-backup是否今天已运行,但是我的第二个if
无法正常工作。
rdiff() {
#Get day
date=$(date +%d)
x=0
#Treat day
if [ "$date" -le "09" ]; then
date=$(date +%d | cut -c2)
else
date=$(date +%d)
fi
#Run rdiff to check if it has run today and return 0 or 1
output="$(rdiff-backup -l folder/b/1_backup | grep " $date "; echo $?)"
#Echo output for testing only
echo "${output}"
#If true, x++
if [ "$output" == "0" ]; then
x=$((x+1))
printf $x"\n"
printf true"\n"
#If false, prints false
elif [ "$output" == "1" ]; then
printf false"\n"
#If anything else, do nothing
else
echo ???
fi
}
rdiff
exit 0
它总是打印我的else
。
我在做什么错了?
对不起,我是bash脚本的新手。
bash版本: GNU bash,版本4.4.23(0)-发行版(amd64-portbld-freebsd11.1)。
答案 0 :(得分:3)
问题在于您的变量除包含退出代码外还包含日期。
您可以使用grep -q
摆脱grep输出:
output="$(rdiff-backup -l folder/b/1_backup | grep -q " $date "; echo $?)"
或更典型地,直接测试退出代码:
if rdiff-backup -l folder/b/1_backup | grep -q " $date "
then
echo "Already done"
else
echo "No match for $date"
fi