Funções do bash do Ubuntu..syntax error: “(” ”ou“} ”inesperado

6

Tentando executar algumas funções bash, mas continue encontrando erro de sintaxe: "(" inesperado. Eu tentei remover os parênteses, parênteses etc etc ... nada parece funcionar.

$ bash --version
GNU bash, version 4.3.46(1) release
#!/bin/bash
function hello () {
echo "Hello world"
}
    
por James A 09.10.2016 / 15:33

4 respostas

9

Se você estiver executando o script com sh hello.sh , o shell de interpretação não será aquele mencionado na linha shebang, mas /bin/sh será usado. No caso do Debian e do Ubuntu, por padrão, isso será dash .

Então, para executar seu script corretamente com um bash , use um dos itens a seguir.

/bin/bash hello.sh

ou

chmod +x hello.sh
./hello.sh

Como alternativa, você também pode definir bash como /bin/sh .

dpkg-reconfigure dash 
    
por Thomas 09.10.2016 / 15:46
2

GNU Bash é o shell usado por padrão em terminais no Ubuntu. No entanto, quando os scripts são executados na inicialização do sistema, o traço é usado, pois é o traço que é / bin / sh.

não funciona - >

$ sh hello.sh

funcionará - >

$./hello.sh

Problema resolvido

    
por James A 09.10.2016 / 16:37
2

Primeiro:

O erro de sintaxe é por causa de (). Remove () do arquivo assim:

#!/bin/bash
function hello {
echo "Hello world"
}

ou você pode simplesmente executar o seguinte comando para editar o arquivo para você:

sed -i 's/() //g' hello.sh

Agora você deve conseguir executar o arquivo com o resultado desejado.

Como alternativa :

Você pode adicionar as linhas 2, 3 e 4 ao seu arquivo ~/.bashrc .

function hello () {
echo "Hello world"
}

Lembre-se, não use sudo para editar seu arquivo ~/.bashrc !

Depois de adicionar as linhas ao arquivo, execute o seguinte comando para reiniciar o bash ou "source" seu arquivo .bashrc:

. ~/.bashrc

Agora você deve conseguir executar o comando hello e "Hello world" deve imprimir no terminal.

Também:

Você pode editar o arquivo para dizer isso:

#!/bin/bash
echo "Hello world"

e nomeie o arquivo hello e salve o arquivo em /usr/local/bin .

Depois de fazer tudo isso, torne o arquivo executável executando o seguinte comando:

sudo chmod +x /usr/local/bin/hello

Agora você deve conseguir executar o comando hello e "Hello world" deve imprimir no terminal.

Finalmente:

Uma terceira opção seria adicionar a seguinte linha ao seu arquivo ~/.bashrc :

alias hello='echo "Hello world"'

Em seguida, crie seu arquivo .bashrc usando o seguinte comando:

. ~/.bashrc 
    
por mchid 09.10.2016 / 15:46
1

De acordo com o seu script:

#!/bin/bash
function hello () {
    echo "Hello world"
}

#call this function as follow:
hello   # Syntax Correct
hello() # Syntax Error
    
por Benny 09.10.2016 / 15:53

Tags