#!/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/