初心者はここで私と一緒にいてください。私は解決策ファイルと学生提出ファイルから宿題の提出を比較しようとしています。ネストされたwhileループはBashで動作しません
problem 1 code
problem 2 code
problem 3 code
私は学生の提出の対応する行と溶液中でそれぞれの行を比較する:各ファイルの内容は三つの問題、1行に1つずつ持っています。私はforループを使用して各生徒ファイルと入れ子のwhileループを実行し、解ファイルと生徒ファイルの各行を実行しています。何らかの理由で、スクリプトはwhileループを完全に無視しています。私は(エコー$液とエコー$の提出だけでパスが正しいかどうかを確認することです)、問題がどこにあるか確認するために、各ライン間のエコーを入れている:
for submission in /home/myfolder/submissions/*
do
echo 1
solution=$(echo /home/myfolder/hwsolution/*)
echo 2
echo $solution
echo $submission
while read sans <&1 && read sol <&2
do
echo 3
echo Student awnser is: $sans
echo Solution is: $sol
echo 4
done 1<$(echo $submission) 2<$(echo $(echo $solution))
echo 5
done
私はそれを実行すると、私が手:
1
2
/home/myfolder/hwsolution/solution
/home/myfolder/submissions/student1
5
1
2
/home/myfolder/hwsolution/solution
/home/myfolder/submissions/student2
5
1
2
/home/myfolder/hwsolution/solution
/home/myfolder/submissions/student3
5
コードにネストされたwhileループはありません。投稿する出力が期待する出力にどのように関係しているのかは不明です。 –
また、 '1 $(echo $ submission)'や '2 $(echo $(echo $ solution))'がどんなに役に立つかは不明です。 (また、ファイル記述子1またはファイル記述子2を入力に使うのは、実際には* stdoutとstderrにそれぞれ予約されているので、*実際は悪い考えです)。 –
...多分*ファイルの内容を読みたいですか?もしそうなら、あなたは '<" $ solution "'を望んでいて、 'echo'はありません。 –