É chamado de comando composto e a sintaxe é
{ compound-list; }
(este é um exemplo de um comando composto, outras coisas como for
loops, etc. também são comandos compostos)
Por exemplo:
{
echo 'hello'
echo 'world'
}
O ;
só é necessário se não houver uma nova linha antes do final }
:
{ echo 'hello'; echo 'world'; }
Os comandos na construção { ...; }
são executados no ambiente atual , assim como para uma função.
Mais informações sobre isso estão disponíveis em a descrição do padrão POSIX de comandos compostos .
Não há razão (ou possibilidade) para nomear essas seções, já que nomear essa seção é mais ou menos equivalente a criar uma função shell de qualquer maneira. A nomeação de um comando composto seria, além disso, apenas necessária se for para ser referido posteriormente, para que servem as funções.
Os comentários podem obviamente ser usados:
# my hello world thing
{
echo 'hello'; echo 'world'
}
De maneira similar, um subshell pode ser encontrado com
(
echo 'hello'
echo 'world'
)
Isso é executado em um ambiente filho para o shell atual e as alterações em variáveis etc. não serão refletidas no shell atual.
A sintaxe geral é
( compound-list )
Aqui, não há necessidade de um ;
final antes de )
.
Como curiosidade, as funções do shell podem usar (...)
no lugar de {...;}
para executar seu código em um ambiente local:
helloworld () (
echo 'hello'
echo 'world'
)
Isso pode ser útil para saber se alguém está escrevendo uma função em uma linguagem sh
que não suporta variáveis locais ( local
ou typeset
em bash
) e que não precisa modificar o ambiente do script .