shell script editado no windows exibe mensagem de erro inesperada [duplicado]

0

Estou com problemas para executar um script em ssh para um servidor remoto. Se eu simplesmente ssh da linha de comando eu não tenho problemas para chegar ao servidor, mas quando eu executar um script para fazer isso eu recebo um erro, "Nome ou serviço not knownname". Eu adicionei o endereço IP e o nome do host a / etc / hosts e isso não ajudou.

Meu script é simples:

 #!/bin/bash 
ssh username@hostname

Estou fazendo algo errado? Eu só estou aprendendo a escrever scripts para o bash, então não posso dizer que realmente sei o que estou fazendo. Obviamente, eu não preciso de um script apenas para isso, mas vou adicionar comandos para executar assim que eu começar a trabalhar.

    
por Daniel Jensen 10.10.2014 / 23:09

1 resposta

7

O problema com o script é que, ao copiar um arquivo de outro sistema como o Windows, ele adiciona uma nova linha \n e um retorno de carro \r\n . Para obter mais informações sobre feeds de linha, consulte a entrada newline na wikipedia.

Para demonstrar o problema, enviei um pequeno fragmento aqui , que explica como resolver o problema.

Resumindo: Use tr para remover os finais de linha estranhos

tr -d \r <yourscript>newscript && mv newscript yourscript

Em seguida, execute o script novamente.

Ou como o artm sugeriu.

Enquanto estiver no editor vim , use

:set ff=unix

( ff é a abreviação de fileformat ) e salva o arquivo por shift+zz .

    
por 11.10.2014 / 00:15