O arquivo de texto que constitui o script de shell foi escrito no Notepad ++. Este editor salva arquivos como arquivos de texto DOS por padrão que, do ponto de vista Unix, tem um retorno de carro supérfluo ( \r
) no final de cada linha. Isso confunde sh
.
Para removê-lo:
$ tr -d '\r' <q.sh >q-new.sh
$ mv q-new.sh q.sh
O script tem falta uma #!
-line (como apontado nos comentários), mas contanto que você o execute com um intérprete explícito ( sh q.sh
), isso não é necessário.
Adicionando a linha
#!/bin/sh
iria (depois de chmod +x q.sh
) fazer a execução como ./q.sh
se comporta exatamente da mesma forma que executá-lo com sh q.sh
.