现在,我有一个脚本,它使用以下命名方案每天创建一个新目录:
cur_date=$(date +"%m_%d_%y)
mkdir test_dir_$cur_date/
结果是:
test_dir_09_12_16
test_dir_09_13_16
test_dir_09_14_16
etc...
每天都过去了。
我尝试做的是进行条件检查以查看前一天目录是否存在,如果存在,请使用rsync将差异从前一天传输到新的一天目录。我的问题是,我现在确定如何执行条件来执行此操作。我知道
if [ -d test_dir_%m_%d-1_%y]
可能不是正确的语法,所以我希望提供以下内容:
if [ -d test_dir_(previous_day)]; then
rsync -av test_dir_(previous_day) test_dir_$cur_date/
fi
将起作用,不会导致任何错误。 这可能吗?
答案 0 :(得分:1)
您可以使用前一天获取:
pd=$(date -d '-1 day' '+%m_%d_%y')
然后检查目录使用是否存在:
if [[ -d test_dir_${pd} ]]; then
echo "exists"
rsync -av "test_dir_${pd}" "test_dir_${cur_date}"
else
echo "doesn't exist"
fi
答案 1 :(得分:1)
shell对日期算术一无所知。您需要再次调用date
来获取昨天的日期。在一般情况下(通过新年或3月1日),没有简单的方法可以通过纯算术或字符串操作获得昨天的日期。
在Linux(GNU coreutils)系统上,date -d yesterday
执行此操作。在* BSD(包括OSX)上,语法会略有不同。如果您需要同时处理两者,请编写包装器或使用脚本语言。