要解决Bash脚本创建目录和子目录时可变输入不起作用的问题,可以使用递归函数来处理可变输入,并在每个子目录创建之前检查目录是否存在。下面是一个示例代码:
#!/bin/bash
# 递归函数创建目录和子目录
create_directory() {
local dir=$1
local subdirs=${@:2}
# 检查目录是否存在,如果不存在则创建
if [ ! -d "$dir" ]; then
mkdir "$dir"
fi
# 递归创建子目录
for subdir in $subdirs; do
create_directory "$dir/$subdir"
done
}
# 主函数
main() {
# 输入要创建的目录和子目录
read -p "输入要创建的目录和子目录(以空格分隔):" dirs
# 将输入分割为数组
IFS=' ' read -r -a dir_array <<< "$dirs"
# 调用递归函数创建目录和子目录
create_directory "${dir_array[@]}"
}
# 调用主函数
main
在上面的代码中,我们首先定义了一个递归函数create_directory
,它接受一个目录名称和可变长度的子目录作为参数。函数首先检查传入的目录是否存在,如果不存在则创建。然后,它使用for
循环迭代子目录数组,并递归调用create_directory
函数来创建子目录。
在主函数main
中,我们首先提示用户输入要创建的目录和子目录,然后将输入分割为数组。最后,我们调用create_directory
函数来创建目录和子目录。
使用这个脚本,你可以输入多个目录和子目录,它会递归地创建它们。