Meu palpite é que você não executa este script como um script Bash, mas com algum outro shell, que não aceita essa sintaxe. Por exemplo. sh
.
Como você pode ver no Shellcheck, e como o man
do Bash no meu Debian confirma, esta sintaxe está correta:
name () compound-command [redirection]
function name [()] compound-command [redirection]
Você está usando o segundo dos dois acima e seu compound-command
é o conteúdo das chaves {...}
. E tudo bem, até onde man bash
vai. Mas então, há vozes contra esse constructo, como no link no comentário de John Moon abaixo da outra resposta. E no link para o Greg's Wiki nessa resposta novamente.
Voltando à sua pergunta, levando em consideração o nome do script, ou seja, Dockerfunctiontest.sh
, acho que você não vê muita diferença entre sh
e bash
. Provavelmente você executa o script com este comando:
sh Dockerfunctiontest.sh
Embora seja razoável executá-lo com:
bash Dockerfunctiontest.sh
ou
./Dockerfunctiontest.sh
O último escolhe o interpretador baseando-se na primeira linha do script, a saber:
#!/bin/bash
E enquanto o intérprete nomeado no script é Bash, por que não nomear o arquivo da maneira correta?
Dockerfunctiontest.bash
Menos confusão no futuro.