デフォルトでは、コードを実行すると2つの構文エラーが発生します。次のように:
./Qscript.sh: line 34: unexpected EOF while looking for matching `"'
./Qscript.sh: line 44: syntax error: unexpected end of file
これらの問題を解決しても他のエラーが発生しますか?
#!/bin/bash
right=0
wrong=0
question=10
i=0
if [ $# -eq 2 ]
then
for((i=0; 1<question;)) {
i=$(expr $i +1)
y=$i
echo "${awk "NR==$y" $1)"
read -p "Enter Answer: " arg1
result=$(awk "NR==$y" $2)
if [ "$arg1" = "$result" ]
then
right=`expr $right + 1`
else
wrong=`expr $wrong + 1`
fi
)
echo "Number_of_correct_answers " $right
echo "Number_of_wrong_answers " $wrong
fi
if [ $# -eq 3 ]
then
for((i=0; i<question;)) {
i=$(expr $i + 1)
y=$i
ans="$(awk "NR==$y" $2)"
resultfile=$(awk "NR==$y" $3)
if [ "$resultfile" = "$ans" ]
then
right=`expr $right + 1`
else
wrong=`expr $wrong + 1`
fi
)
echo $right
fi
答え1
批判するには、コメントの回答に加えて、次のようなスキルを試してください。
- 変数を引用符の中に入れます。
echo "Number_of_correct_answers ${right}"
たとえば、これは$ rightが拡張され、場合によっては望ましくない影響を与える問題を回避するのに役立ちます。
- $()の代わりに「」を使用してください。
$( $() )
``を使用すると、バックティックは/ bin / shと逆互換になります。これは/bin/bash(以前のSolarisなど)よりも少し便利ですが、同じ方法でネストすることはできません。
- 「」を入れ子にしないでください。
可能であれば、awkなどの引用符を追加する必要がある場合は、「代わりに」を使用してみてください。