Compreendendo os números de linha relatados ao usar eval

4

Ok, estou preso a trabalhar com um script de shell que precisa usar eval (eu sei, eu sei, o mal definitivo, etc ...), mas estou tendo dificuldades para depurar alguns dos números de linha que estão sendo descartados por erros.

Por exemplo:

script.sh: eval: line 315: syntax error near unexpected token '('

A linha definitivamente não corresponde à linha 315 em script.sh , pois isso não está relacionado ao erro. Então eu joguei novas linhas aleatórias para descobrir qual linha está originando o erro, e como você esperaria que fosse uma linha com uma declaração eval .

No entanto, quando eu envio o código que está sendo passado para o eval , ele nem contém 200 linhas, quanto mais 315+! Então, o que está acontecendo aqui? Existe uma maneira de usar utilmente os números de linha que estão sendo relatados, eles são de alguma forma baseados na posição em que a instrução eval é executada ou algo assim? Eu não consigo ver um padrão até agora.

Se eu pudesse substituir todas as instruções eval , mas infelizmente o código que está sendo passado é gerado dinamicamente (não a partir da entrada do usuário, não se preocupe!), e precisa ser capaz de manipular variáveis na mesmo escopo do resto do script, o que parece impedir o uso de echo "$commands" | sh ou alternativas similares. Eu também tenho o problema de compatibilidade e, infelizmente, como o mal como é eval está amplamente disponível.

    
por Haravikk 10.12.2013 / 16:51

0 respostas