Script não foi executado conforme a expectativa

3

Eu tenho dois scripts Perl em um local predefinido no Unix. Esse local predefinido é definido na variável de caminho ( $PATH ). Agora, quando tento executar o primeiro script (de qualquer local), o script é executado com êxito, enquanto que, para o segundo script (no mesmo caminho do script anterior), aparece um erro dizendo

ScriptB: Command not found

Meu shell é tcsh e as permissões dadas a ambos os scripts são as mesmas.

Qual pode ser a razão provável para tal comportamento errôneo?

    
por Mayank Jain 17.05.2013 / 16:21

1 resposta

5

ScriptB possui finais de linha CRLF. Como o kernel não suporta o CRLF, ele está tentando executar um programa chamado "/path/to/bin/perl\r" (onde \r indica um CR). Esse programa não existe. Converta os finais da linha ScriptB para LF. (Obrigado Stephane Chazelas por perguntando a pergunta correta. O \r na saída sed indica o problema.

sed l\;q FILE executa 2 comandos sed (separados por um ponto-e-vírgula, que precisa ser escapado porque também é um metacaractere de shell). De man sed :

l  List out the current line in a "visually unambiguous" form
q  Immediately quit the sed script without processing any more input,
   except that if auto-print is not disabled the current pattern space will be printed.

Portanto, l imprime a primeira linha em um formato que torna os caracteres normalmente ocultos como CR visíveis e, em seguida, q sai após a primeira linha.

    
por 17.05.2013 / 16:37