linux - bash shell 脚本根据年份和月份创建子目录

标签 linux bash shell aix

描述:列表/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

最佳答案

请理解,这个答案不是鱼,而是钓鱼课。

首先使用一些打印语句对此进行调试,以查看数组迭代甚至尝试使用您认为它正在使用的值。在尝试打印 i 时,所有的 i 都看过了吗?测试语句呢,测试是否通过? (为什么还要检查该行是否存在?只是逃避错误?)

然后,如果这不是问题,则更深一层,依此类推。

如果我们不这样做,还有许多其他可能导致问题的可能性。

此时您可能应该意识到问题与 mkdir、年、月、aix 或除您的 bash 语法之外的任何其他内容无关。

祝你好运!

关于linux - bash shell 脚本根据年份和月份创建子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820550/

相关文章:

linux - 检查是否在 Bash 中设置了陷阱

c++ - 使用 gcc 静态编译一些包时出现关于 libprocps.a 的错误

linux - 如何从PID查找网络连接

bash - 如何在 shell 脚本中单行获取 grep 的输出?

bash - 为什么bash的子函数中trap ERR失败?

php - 当 C 使用 system() 和用户输入时,以 root 身份运行 C 是否危险?

linux - diff 命令忽略新目录中的新文件

c - N 个线程写入以不同优先级运行的 M 个文件,并跟踪线程请求的和当前分配给线程的所有文件

php - gettext 没有翻译显示

linux - 根据唯一时间戳对目录中的文件进行排序并将它们分组