说明:列表/home/foo/dirlist.txt包含/ tmp / a .. / tmp / z
目标:创建子目录,例如/ tmp / a / 2014/04,/ tmp / b / 2014/04 … / tmp / z / 2014/04
错误:仅在文件只有一个目录(例如/ tmp / a)时创建子目录
执行后,最终结果应为/ tmp / a / 2014/04.但是,当文件具有多个条目(例如/ tmp / a … / tmp / z)时,不会创建任何子目录*
我如何实现我的目标?在此先感谢您提供任何提示和指示.
## /home/foo/dirlist.txt contains /tmp/a /tmp/b .. /tmp/z
archdirs=`/usr/bin/cat "/home/foo/dirlist.txt"`
YYYY=`/usr/bin/date '+%Y'`
MM=`/usr/bin/date '+%m'`
for i in "${archdirs[@]}";
do
if [ ! -d "$i/${YYYY}/${MM}" ]; then
/usr/bin/mkdir -p "$i/${YYYY}/${MM}"
fi
done
解决方法:
请理解,这个答案不是一条鱼,而是一门钓鱼课.
首先使用一些打印语句进行调试,以查看数组迭代甚至尝试使用您认为正在使用的值.就像尝试打印一样,我什至都看过?那测试陈述呢,测试甚至可以通过? (为什么还要检查行是否存在?只是逃避错误?)
然后,如果这不是问题,则将其更深一层,依此类推.
如果我们不这样做,可能还有其他数十种可能导致此问题的可能性.
此时,您可能应该意识到问题与mkdir,年,月,aix或bash语法无关.
祝好运!