Eu conheço esse tipo de uso $( ), mas não há descanso. É que é $(command) &isso que me confunde.
AlphaOmega
Respostas:
20
Resposta curta
Dada a sintaxe $(command) &, o resultado é o mesmo como se você tomou a saída de executar apenas commande, em seguida, tentou correr que como um comando. E tudo isso seria feito em segundo plano, significando que não haveria saída visível ou pendurado no terminal.
Por exemplo, se tivéssemos um arquivo de texto nomeado mycommand.txtcom o conteúdo:
echo "Hello World"
Então o comando
$(cat mycommand.txt)&
seria equivalente a correr
echo "Hello World"&
Porém, como adicionamos o e comercial ( &), não veríamos nenhuma saída desse comando, portanto seria bastante inútil neste 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 a partir de um script bash ou está obtendo o valor dessa variável para alguma coisa. A diferença no script bash para chamar e declarar variáveis é a seguinte:
Declare uma variável sem o cifrão e chame-a com um cifrão. Por exemplo, um script que contém esse
#!/bin/bash
STR="Hello World!"
echo $STR
Produziria isso
HelloWorld!
Parênteses ()- Substituição de comando
A substituição de comando permite que a saída de um comando substitua o próprio comando. A substituição de comando ocorre quando um comando é incluído da seguinte maneira:
$(command)
ou
`command`
O Bash executa a expansão executando o comando em um ambiente de subshell e substituindo a substituição do comando pela saída padrão do comando, com as novas linhas finais excluídas. As novas linhas incorporadas não são excluídas, 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).
E comercial &- processo em segundo plano
E então o e comercial, ou &símbolo, é como você disse, usado para executá-lo em segundo plano.
É um símbolo presente na janela do terminal que, dependendo do que você está tentando fazer, pode não ser necessário para você entrar. Quando você abre um terminal, você o verá imediatamente.
monkeyman_stones
Eu não entendo Embora curta, isso responde à pergunta real, enquanto a resposta aceita não.
$( )
, mas não há descanso. É que é$(command) &
isso que me confunde.Respostas:
Resposta curta
Dada a sintaxe
$(command) &
, o resultado é o mesmo como se você tomou a saída de executar apenascommand
e, em seguida, tentou correr que como um comando. E tudo isso seria feito em segundo plano, significando que não haveria saída visível ou pendurado no terminal.Por exemplo, se tivéssemos um arquivo de texto nomeado
mycommand.txt
com o conteúdo:Então o comando
seria equivalente a correr
Porém, como adicionamos o e comercial (
&
), não veríamos nenhuma saída desse comando, portanto seria bastante inútil neste 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 a partir de um script bash ou está obtendo o valor dessa variável para alguma coisa. A diferença no script bash para chamar e declarar variáveis é a seguinte:
Declare uma variável sem o cifrão e chame-a com um cifrão. Por exemplo, um script que contém esse
Produziria isso
Parênteses
()
- Substituição de comandoA substituição de comando permite que a saída de um comando substitua o próprio comando. A substituição de comando ocorre quando um comando é incluído da seguinte maneira:
ou
O Bash executa a expansão executando o comando em um ambiente de subshell e substituindo a substituição do comando pela saída padrão do comando, com as novas linhas finais excluídas. As novas linhas incorporadas não são excluídas, 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)
.E comercial
&
- processo em segundo planoE então o e comercial, ou
&
símbolo, é como você disse, usado para executá-lo em segundo plano.fonte
toma a saída de "comando" como um comando e executa isso em segundo plano. Seu funcional é comparável com "eval"
fonte