Mensagens de erro de sintaxe de script de shell “final de arquivo inesperado” e “EOF inesperado ao procurar correspondência '” ”

1

basicamente quando executo meu código, recebo dois erros de sintaxe. abaixo:

./Qscript.sh: line 34: unexpected EOF while looking for matching '"'
./Qscript.sh: line 44: syntax error: unexpected end of file

E quando eu corrijo, ainda recebo alguns erros diferentes?

#!/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
    
por Shiro 19.02.2017 / 18:13

1 resposta

0

Para fins de crítica, além das respostas nos comentários, sugiro que você tente adotar a técnica de fazer o seguinte:

  • colocando variáveis entre aspas:

echo "Number_of_correct_answers ${right}"

Por exemplo, isso ajudaria a evitar problemas em que $ right poderia se expandir em certas situações com efeitos indesejáveis.

  • use '' em vez de $ ()

Usando '', embora não seja possível aninhar da mesma maneira que $( $() ) pode, backticks são compatíveis com versões anteriores / bin / sh que é um pouco mais disponível que / bin / bash (como solaris mais antigas etc) .

  • não tente aninhar ""

Se possível, quando você precisar colocar aspas em coisas como o awk, tente usar 'em vez de', se você realmente precisar, então um HEREDOC pode ser mais apropriado.

    
por 19.02.2017 / 19:27