디렉터리 오류를 삭제할 수 없습니다.

디렉터리 오류를 삭제할 수 없습니다.
#!/bin/bash

touch student.txt
a=0
while [ $a -lt 15 ]
do
echo "enter name"
read name
echo $name >> student.txt
a=`expr $a + 1`
done
while read line
do
mkdir $line
cd $line
echo '#!/bin/bash' >> $line.sh
echo "echo '$line'" >> $line.sh

chmod u+x $line.sh
./$line.sh
cd ..
done  <student.txt
ls
a=0
while [ $a -lt 15 ]
do
while read line
do

rm -r $line
done <student.txt

a=`expr $a + 1`
done

스크립트는 학생.txt 파일을 생성한 다음 사용자로부터 학생 이름에 대한 입력을 받아 동일한 이름의 파일과 디렉터리를 생성합니다. ls생성되었으나 디렉터리를 삭제할 때 오류가 발생합니다. '디렉터리 이름'을 삭제할 수 없습니다. 해당 파일이나 디렉터리가 없습니다. ls삭제되었음을 표시합니다. 왜 오류가 발생합니까?

답변1

생성된 디렉터리를 삭제하는 루프가 있기 때문입니다. 처음 삭제한 후 14번 더 시도했지만 이미 삭제되었기 때문에 모두 실패합니다.

그런데, 코드에 문제가 많이 있습니다.

  • 패턴을 읽을 수 있도록 들여쓰기합니다.
  • "$line"사용자 입력에 공백이 있어도 스크립트가 손상될 수 있으므로 따옴표를 사용하세요.
  • 반복적인 사용자 입력으로 인해 오류가 발생할 수도 있습니다. 이전에 중복에 대해 더 나은 작업 테스트를 수행해야 합니다.

또한 다음과 같이 코드를 실행하는 것을 고려할 수도 있습니다.https://www.shellcheck.net/

관련 정보