user@sv7280:~$ return
bash: return: can only `return' from a function or sourced script
user@sv7280:~$ { return }
>
O que está acontecendo, o que o prompt >
significa aqui, onde isso { return }
me leva?
user@sv7280:~$ return
bash: return: can only `return' from a function or sourced script
user@sv7280:~$ { return }
>
O que está acontecendo, o que o prompt >
significa aqui, onde isso { return }
me leva?
>
é o$PS2
prompt que o shell emite para informar que o comando não foi concluído e precisa de mais entradas de você para completá-lo.No bash, se você fizer:
Você verá as saídas
}
.{
é uma palavra-chave que inicia um grupo de comandos.é a palavra-
{
chave seguida pela nossaecho }
de cima, e o shell está esperando pela palavra-chave de fechamento}
antes de poder começar a executá-la.Essa
}
palavra-chave deve ser separada do comando anterior, com;
, newline (ou&
, ou até mesmo coisas como{(echo)}
...).Seja ele
echo
oureturn
embutido, do ponto de vista da sintaxe , não faz diferença. Então você precisaria:Mas ainda assim, isso
return
não é chamado de dentro de uma função, então você ainda obteria esse erro.Para definir uma função, em shells do tipo Bourne, você ainda está
funcname()
na frente de um comando. No caso debash
, o comando só pode ser um comando composto, como(subshell)
,{ command group; }
,for ...; do ...; done
....Então, você precisaria:
Ou:
Além de funções,
return
pode ser chamado de scripts de origem, portanto, se você quiser retornar de um grupo de comandos sem precisar definir uma função, poderá fazer:Ou você pode usar um subshell e usar
exit
no lugar dereturn
:(mas é claro, os comandos são executados em um ambiente subshell)
Em
zsh
, você também pode usar uma função anônima: