我想删除当前日期目录以外的所有目录。 目录名称以此MM-DD-YY格式作为日期 所以目录名是
17年10月12日
17年10月11日
17年10月10日 ..etc
#!/bin/bash
echo Hello World!
one_day=$(date -d "1 days ago" +%m%d%y)
for f in [0-9][0-9]-[0-9][0-9]-[0-9][0-9]; do
[ -d "$f" ] || continue
(( $f < $one_day )) && sudo rm -rf "$f"
done
运行我的脚本时出现以下错误:
./script.sh: line 9: ((: 10-08: value too great for base (error token is "08")
./script.sh: line 9: ((: 10-09: value too great for base (error token is "09")
答案 0 :(得分:1)
你好像在试图检查&#34; 11-10-17&#34;之间的不平等。和&#34; 111017&#34; (一个是int,另一个是字符串)。 Bash将允许您使用!=
检查字符串不等式#!/bin/bash
one_day=$(date -d "1 days ago" +%m-%d-%y)
for f in [0-9][0-9]-[0-9][0-9]-[0-9][0-9]; do
[ -d "$f" ] || continue
[ "$f" != "$one_day" ] && sudo rm -rf "$f" && echo "$f" && continue
[ "$f" == "$one_day" ] && echo "Leaving $f"
done