技术解析

shell 怎么打印 5 天前到 30 天前
0
2021-07-13 06:18:12
idczone

mytime=$(date -d -5day +"%Y%m%d")
shell怎么打印5天前到30天前
输出这样的
20150502
20150501
20150430
20150429
.....


使用Bash Shell的for循环:
for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
do
date -d -${i}day +"%Y%m%d"
done

怎么把循环后的定义到变量
timeee=20150429
timeee=20150428
timeee=20150427
然后好删除文件。
rm -rf 20150429
rm -rf 20150428
rm -rf 20150427

已经告诉你答案了,还是要自己稍微动点脑筋的

替换下do到done之间的命令就行了。
没必要加入到另一个变量吧:
for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
do
rm -rf $(date -d -${i}day +"%Y%m%d")
done

我是小学生 刚学

应该要加入另外变量。因为我从文本读取了变量
rm -rf servername1 /20150427
其中servername是从txt种读行取的。最终是
rm -rf servername1 /20150429
rm -rf servername2 /20150429
rm -rf servername3 /20150429
rm -rf servername4 /20150429

rm -rf servername1 /20150428
rm -rf servername2 /20150428
rm -rf servername3 /20150428
rm -rf servername4 /20150428
rm -rf servername1 /20150427
rm -rf servername2 /20150427
rm -rf servername3 /20150427
rm -rf servername4 /20150427


for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
do
rm -rf $(date -d -${i}day +"%Y%m%d")
done 这个我开始想到了 试了好像不成功


cat server_list.txt | xargs -i rm -rf /backup/{}/日期变量


又不说清楚点,谁清楚你的具体需求呢?
还是用for循环:
unset NTD
for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
do
NTD=${NTD}$(date -d -${i}day +"%Y%m%d"),
done
for server in $(cat server_list.txt)
do
eval rm -rf /路径/${server}/{$(echo ${NTD} | sed -r "s/,$//g")}
done

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服