現在の学期のフォルダ階層を生成するスクリプトを作成します。スクリプトは次のことを行う必要があります。
- 現在の学期名「Spring2021」を含む変数を作成します。
- この学期コースを含む配列を作成します。
- Slides、TMA、F-THE、EssayQuizなど、各コースに対して作成されるフォルダを含む配列を作成します。
- 以下を行う関数を作成します。 3つの変数を受け入れます。最初の変数は文字列で、2番目と3番目の変数は配列です。 (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ループなしでこれを行うことができると思いますが、方法はわかりません。
また、ここに投稿する前に必ずスクリプトを確認することをお勧めします。個人的に使っています。住宅検査良い結果。