要让用户输入主题并将它们保存在数组 subjects 中,请运行:
echo "Enter subjects, one per line, type Ctrl-D when done:"
readarray -t subjects
运行上述代码,输入三个主题:
Enter subjects, one per line, type Ctrl-D when done:
Math
History
Biology
(在生物学之后的新行,我们看不到它,但用户输入了 Ctrl-D。)
我们可以通过使用declare -p 检查subjects 确实是我们想要的数组:
$ declare -p subjects
declare -a subjects=([0]=$'Math\n' [1]=$'History\n' [2]=$'Biology\n')
一边
当您使用引用变量时,它们应该用双引号引起来,以防止分词和路径名扩展。因此,替换:
for directories in ${subjects[*]}
do
mkdir -p /home/uczelnia/$year/$group/$student/$directories
done
与:
for directories in "${subjects[@]}"
do
mkdir -p "/home/uczelnia/$year/$group/$student/$directories"
done
整个脚本
read -p "Enter year: " year
read -p "Enter group: " group
read -p "Enter student: " student
echo "Enter subjects, one per line, type Ctrl-D when done:"
readarray -t subjects
for directories in "${subjects[@]}"
do
mkdir -p "/home/uczelnia/$year/$group/$student/$directories"
done