Geralmente isso acontece quando você copia / cola algum comando de outra fonte e, acidentalmente, copia alguns caracteres especiais invisíveis .
Geralmente, o erro se parece com:
line 39: $'[20-e': command not found.
Onde 0302 0240 é octal UTF-8 para um espaço sem quebra.
Se você estiver usando o vi / vim, poderá verificar seu código usando o comando :set list
. Como é sugerido em stackoverflow , você pode fazer isso:
:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
em seguida, usando :set list
, você verá todos os caracteres invisíveis, exceto os espaços em branco
Também recomendo que você adicione shebang no topo do seu script. No seu caso, #!/bin/bash
.