Depois de bisbilhotar vários fóruns e alguma postagem sobre estouro de pilha, encontrei o problema.
Aqui está uma explicação para entender melhor e "ver" a causa raiz dos erros.
First off if you are writing code on Windows, better arm yourself with Notepad++. It's basically the Swiss Army knife of text-editors in my opinion.
Agora, para ver os caracteres EOL (fim de linha) e outros símbolos de controle, faça o seguinte:
1.Abra o arquivo no Notepad ++.
Select View > Show Symbol > Show All Characters from the Menu bar
You should now see the symbols as follows:
Aha! Windows/MS-DOS uses CR+LF to indicate end-of-lines. Now UNIX uses LF character to indicate line termination (EOL character).
2.1.Vamos converter o Windows EOL em EOLs do UNIX:
Selecione EDITAR > Conversão EOL > Formato UNIX
Você deve ver algo assim:
Issoexplicaporquevimosocaractere'\r'sendoanexadonofinaldalinha.IssoocorreporqueoUNIXreconheceuo'\n'ouLF(linefeed)comoocaracteredeterminaçãodelinha/EOL,masignorouocaractere'\r'ou^M(retornodecarro).
TambémpodemostestaroproblemadeEOLpor
bash-3.00$headmyScript.sh|cat-vet|head-1#usr/bin/bash^M$bash-3.00$#Weseethat^M,thatis\risfoundattheendofeachline.
2.2.SevocêgostariadeconverteroarquivodoWindowsparaoformatoUNIXEOLnoUNIX,entãoháduasmaneirasdecorrigirisso:
$dos2unixmyScript.sh
ou
Useasoluçãofornecidapelo@ChrisDownconformeabaixo:
$sed-i's/\r$//'myScript.sh
Referências:
- Paramaisinformaçõessobrealinha
rescisão e O que é a diferença entre r e n referencie esses links.