기본적으로 코드를 실행하면 두 가지 구문 오류가 발생합니다. 다음과 같은:
./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와 같은 따옴표를 추가해야 할 때 " 대신 '를 사용해 보십시오. 꼭 그렇게 해야 한다면 HEREDOC이 더 적합할 수 있습니다.