手头的问题
我正在尝试编写一个 bash 脚本来快速创建目录结构。这是一个尝试了解更多关于操作数组、变量和使用循环的信息。我的脚本用于检查目录是否存在,然后创建文件夹。我遇到的问题是在前两层中创建第三级目录。
目标
我希望能够编写一个 bash 脚本,~/a/a/a, ~/a/a/b, ~/a/a/c,...,~/a/z/z
例如创建一个目录结构。这应该是灵活的,所以我可以使用任何合适的数组或变量。
这是我到目前为止所做的:
#!/bin/bash
array_0=(one two three four five)
array_1=(x y z)
if [ ! -d "directory" ]; then
mkdir directory
fi
for array_0 in "${array_0[@]}"
do
mkdir ~/directory/$array_0/
done
if [ -d "~/directory/$array_0/" ]; then
for array_1 in "${array_0[@]}"
do
mkdir ~/directory/$array_0/$array_1
done
fi
exit 0
问题
我得到的错误是mkdir: cannot create directory '/home/user/directory/one/x' : No such file or directory
该脚本的其他尝试允许我创建~/directory
并且~/directory/one, ~/directory/two,..., ~/directory/five
不会失败,但不能创建下一个级别,即/directory/one/x
等。
如何编写创建此目录结构的脚本?这可以使用数组还是有其他方法?
你可以使用嵌套数组循环,像这样
或者,如果您不介意避免使用数组而是使用扩展列表,那么这个单一命令将做同样的事情: