Se é Bash então aqui reclama de estar faltando EOF.
Vc pode fazer funções que são chamadas dependendo de qual o shell em execução, para isso vc detecta o shell em execução e com if ou case faz chamar as funções compatíveis com o shell que foi detectado. Será que estou escrevendo besteira?
Tá não, na verdade isso deve ser feito, porque por exemplo existem diversas implementações do sed, a do GNU, do BSD, do BusyBox, e embora elas tentam ser manter a interoperabilidade entre sí, ainda há diferenças de sintaxe que tornam isso de se for gnu rode X, se for busybox rode Y algo indispensável…
E esse tipo de diferença começa já na hora da instalação, por exemplo o alpine que não usa mais o sudo, quebrando o script cURL que eu tenho, além das variações menores tipo qual é o diretório mais adequado pra instala-lo em cada computer…
Valeu pelo feedback mano! É realmente um desafio prever todas as variáveis e conflitos possíveis, mas scripts bem escritos são muito portáveis entre diferentes unix, usando ferramentas que já estão instaladas no sistema.
Neste aspecto, ele está bem em early stage mesmo.
Mas acho bom eu terminar as funcionalidades básicas primeiro, quer dizer; só vai funcionar bem em todos os ambientes se funcionar bem primeiro em um…
@NihaAlGhul eu estava vendo aqui e não precisa da shebeng para executar desta forma:
./file.sh
Duplo click tmb não precisa da shebang.
Com isso sem a shebang o arquivo vai ser executado no shell padrão do sistema ai é colocar as detecções de qual shell esta executando o arquivo usando a variável $SHELL
Cara, é EOF ou EOL? se for EOF é EOF ‘prematuro/inexperado’, não ‘missing’.
Tentei reproduzir aqui mas não consegui dar nada de EOL não, então acredito que o que ocorreu na sua máquina seja o mesmo que eu consegui obter: /usr/local/bin/marclidown: line 424: unexpected EOF while looking for matching ‘’`; se foi isso, corrigido.
Como dito na issue de explicação alí no repo [referenciada nesse commit que eu linkei], deve ser algo a ver com a versão do bash usada nessas 22.04…
Clona de novo ou da pull de dentro do seu diretório se ainda não tiver excluído, ou só baixa o .sh pelo navegador mesmo, da no mesmo executar diretamente ou instalar com make…
@NihaAlGhul Seja lá o que esse programa faz ele desta vez executo com status de saída “0” que no Bash significa sucesso. Foi resolvido, era aquele “)” parênteses mesmo.