创建文件夹和子文件夹

创建文件夹和子文件夹

在此输入图像描述

编写一个脚本,为您当前的学期创建文件夹层次结构。您的脚本应该执行以下操作:

  1. 创建一个变量来保存当前学期名称“Spring2021”。
  2. 创建一个包含本学期课程的数组。
  3. 创建一个数组,其中包含将为每门课程创建的文件夹:Slides、TMA、F-THE、essayQuiz。
  4. 创建一个执行以下操作的函数:接受三个变量:第一个是字符串,第二个和第三个是数组。 (5 分) B.创建以下文件夹层次结构:
MY Code
#!/bin/bash

semester="spring2021"
courses=( "m109" "m105" )
folders=( "tma" "essayquiz" "fthe")

create() {
    echo mkdir $1
    echo cd $1
    
    for i in "${2}"
    do
        echo mkdir -p $i
        echo cd $i

        for j in "${3}"
        do
            echo mkdir $j
        done
        echo` cd ..`
        echocd ..
    done
}

create $semester ${courses[@]} ${folders[@]}

答案1

您必须知道如何将数组传递到函数中。您当前使用的方法并没有达到您的预期。$4会等于,tma而是尝试通过使用local -n和设置与将传递给函数的变量不同的名称来声明变量。我相信只要您使用 bash4.3 或更高版本,这将适用。通过使用,local -n您将能够按照您期望的方式设置变量。

#! /bin/bash                                                                                                   
                                                                                                               
semester="spring2021"                                                                                          
courses=( "m109" "m105" )                                                                                      
folders=( "tma" "essayquiz" "fthe")                                                                            
                                                                                                               
create() {                                                                                                     
                                                                                                               
local -n _semester=$1                                                                                          
local -n _courses=$2                                                                                           
local -n _folders=$3                                                                                           
                                                                                                               
for i in "${_courses[@]}"                                                                                        
do                                                                                                             
     for j in "${_folders[@]}"                                                                                   
     do                                                                                                        
          mkdir -p "$_semester/$i/$j"                                                                     
     done                                                                                                      
done                                                                                                           
                                                                                                               
                                                                                                               
}                                                                                                              
create semester courses folders  

请记住,还有其他方法可以完成您在这里尝试做的事情。虽然我不是 bash 专家,所以我只是按照你的脚本风格进行改进,这就是最终结果。我相信这可以在没有 for 循环的情况下完成,尽管我不知道如何做到这一点。

此外,在将脚本发布到此处之前检查它始终是一个好习惯。我个人使用外壳检查效果很好。

相关内容