A mensagem de erro não está correta, mas parece muito com o que você obteria se o script tivesse aspas duplas (ou "inteligentes") em vez de aspas duplas simples (ASCII). O shell não entende as citações extravagantes, então eles farão o script se comportar de maneiras muito estranhas. Tente imprimir seu script com:
LC_ALL=c cat -vet starter.sh
Isto mostrará qualquer caractere estranho (não-ASCII ou não imprimível) no arquivo. Se imprime algo como:
#!/bin/bash$
STRING=?M-^@M-^\this is a test?M-^@M-^]$
echo $STRING$
... os bits "? M - ^ @ M - ^ \" e "? M - ^ @ M- ^]" são citações extravagantes na codificação UTF-8. Por outro lado, se as linhas do arquivo terminarem com "^ M $" em vez de apenas "$", então o Sleafar está certo e você tem um arquivo formatado em DOS / Windows.