aviso ao executar o script de shell simples no bash para o ubuntu no windows

0

Então eu ativei e instalei Bash para o Ubuntu para Windows , ótimo!

Agora estou tentando escrever um script de shell simples, mas fico preso. Este script de exemplo simples aqui abaixo roda bem no meu servidor linux, mas gera um erro no bash no windows:

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}

# Invoke your function
Hello Zara Ali

# Capture value returnd by last command
ret=$?

echo "Return value is $ret"

saída:

rene@laptop:/mnt/f/xampp/htdocs$ sh test.sh
: not foundite.sh: 2: test.sh:
Hello World

Então, um aviso e nenhuma saída correta. Por quê? Quaisquer configurações para configurar no bash para windows para fazer este trabalho? Eu não mudei nada ainda depois de instalar o bash no windows.

    
por Flion 08.08.2016 / 11:28

1 resposta

1

Do teste, parece que isso ocorre porque seu script foi criado usando o Windows Line Endings (CRLF), em vez de terminações de linha de estilo Unix (LF), provavelmente porque você usou um editor baseado no Windows. Eu encontrei o mesmo problema desde que eu estava usando o SublimeText que padroniza para terminações de linha 'sistema' (CRLF) no Windows.

Para verificar basta copiar seu script e criar o arquivo usando um editor incluído, como o vi no shell do bash do Ubuntu no Windows, configurar seu editor para usar finais de linha do Unix ou converter seu arquivo existente em finais de linha do Unix.

  1. vi test.sh
  2. Cole seu código
  3. Salve o arquivo wq
  4. ./test.sh produz os resultados esperados
por 10.08.2016 / 17:16