无法删除目录错误

无法删除目录错误
#!/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

该脚本创建一个文件student.txt,然后从用户处获取学生姓名的输入,并创建一个同名的文件和目录。 ls显示它们已被创建,但在删除目录时出现错误无法删除“目录名”:没有这样的文件或目录 ls显示它们已被删除为什么会出现错误?

答案1

因为您有一个循环围绕删除创建的目录的循环。第一次删除它们后,您再尝试 14 次,但都会失败,因为它们已经被删除了。

顺便说一句,您的代码有很多问题。

  • 缩进它以使其模式可读。
  • 使用引号,"$line"因为即使用户输入中的空格也会破坏您的脚本
  • 重复的用户输入也会导致错误。你应该在之前更好地测试重复项

您也可以考虑通过运行您的代码https://www.shellcheck.net/

相关内容