폴더 및 하위 폴더 만들기

폴더 및 하위 폴더 만들기

여기에 이미지 설명을 입력하세요.

현재 학기에 대한 폴더 계층 구조를 생성하는 스크립트를 작성하세요. 스크립트는 다음을 수행해야 합니다.

  1. 현재 학기 이름 "Spring2021"을 담을 변수를 만듭니다.
  2. 이번 학기 강좌를 포함하는 배열을 만듭니다.
  3. Slides, TMA, F-THE, EssayQuiz 등 각 코스에 대해 생성될 폴더가 포함된 배열을 만듭니다.
  4. 다음을 수행하는 함수를 만듭니다. 세 가지 변수를 허용합니다. 첫 번째 변수는 문자열이고 두 번째와 세 번째 변수는 배열입니다. (5점) 나. 다음 폴더 계층 구조를 만듭니다.
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. bash4.3 이상을 사용하는 한 이것이 작동할 것이라고 믿습니다. 를 사용하면 원하는 대로 변수를 설정할 수 있습니다.tmalocal -nlocal -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 루프 없이도 이 작업을 수행할 수 있다고 생각하지만 방법은 모르겠습니다.

또한 여기에 게시하기 전에 항상 스크립트를 검토하는 것이 좋습니다. 개인적으로 사용하고 있어요주택 검사좋은 결과.

관련 정보