현재 학기에 대한 폴더 계층 구조를 생성하는 스크립트를 작성하세요. 스크립트는 다음을 수행해야 합니다.
- 현재 학기 이름 "Spring2021"을 담을 변수를 만듭니다.
- 이번 학기 강좌를 포함하는 배열을 만듭니다.
- Slides, TMA, F-THE, EssayQuiz 등 각 코스에 대해 생성될 폴더가 포함된 배열을 만듭니다.
- 다음을 수행하는 함수를 만듭니다. 세 가지 변수를 허용합니다. 첫 번째 변수는 문자열이고 두 번째와 세 번째 변수는 배열입니다. (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 이상을 사용하는 한 이것이 작동할 것이라고 믿습니다. 를 사용하면 원하는 대로 변수를 설정할 수 있습니다.tma
local -n
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 루프 없이도 이 작업을 수행할 수 있다고 생각하지만 방법은 모르겠습니다.
또한 여기에 게시하기 전에 항상 스크립트를 검토하는 것이 좋습니다. 개인적으로 사용하고 있어요주택 검사좋은 결과.