Linux-Bash Shell脚本根据年份和月份创建子目录

说明:列表/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语法无关.

祝好运!

上一篇:记录一则AIX使用裸设备安装OracleRAC的问题


下一篇:为什么我在Linux信号处理中遇到意外行为?