Resposta curta
Dada a sintaxe $(command) &
, o resultado é o mesmo que se você pegasse a saída de executar apenas command
e, em seguida, tentasse executar esse como um comando. E tudo isso seria feito em segundo plano, significando que não haveria saída visível ou pendurada no terminal.
Por exemplo, se tivéssemos um arquivo de texto chamado mycommand.txt
com o conteúdo:
echo "Hello World"
Então o comando
$(cat mycommand.txt) &
seria equivalente a correr
echo "Hello World" &
Mas, como adicionamos o "e" comercial ( &
), não veríamos nenhuma saída desse comando, por isso seria inútil nesse exemplo.
Resposta Longa (Explicação)
Cifrão $
(variável)
O cifrão antes da coisa entre parênteses geralmente se refere a uma variável. Isso significa que esse comando está passando um argumento para essa variável de um script bash ou está obtendo o valor dessa variável para algo. A diferença no bash scripting para chamar e declarar variáveis é a seguinte:
Declare uma variável sem o cifrão e chame-o com um cifrão. Por exemplo, um script que contenha isto
#!/bin/bash
STR="Hello World!"
echo $STR
produziria isso
Hello World!
Parêntese ()
- substituição de comandos
A substituição de comandos permite que a saída de um comando substitua o comando em si. A substituição de comandos ocorre quando um comando é colocado da seguinte forma:
$(command)
ou
'command'
O Bash executa a expansão executando o comando em um ambiente de subshell e substituindo a substituição de comando pela saída padrão do comando, com quaisquer novas linhas finais excluídas. As novas linhas incorporadas não são eliminadas, mas podem ser removidas durante a divisão de palavras. A substituição do comando $(cat file)
pode ser substituída pelo equivalente mas mais rápido $(< file)
.
Ampersand &
- processo em segundo plano
E o símbolo "e" comercial, ou &
, é como você disse, usado para executá-lo em segundo plano.