Vi a seguinte sintaxe em um script bash:
>$(command) &
Sei que o e comercial &no final executa um comando em segundo plano, mas nunca o vi em combinação com o cifrão e os colchetes ao redor do comando.
O que isso faz?
Vi a seguinte sintaxe em um script bash:
>$(command) &
Sei que o e comercial &no final executa um comando em segundo plano, mas nunca o vi em combinação com o cifrão e os colchetes ao redor do comando.
O que isso faz?
Respostas:
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.
$(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
Hello World!
()- 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:
$(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).
&- processo em segundo planoE então o e comercial, ou &símbolo, é como você disse, usado para executá-lo em segundo plano.
toma a saída de "comando" como um comando e executa isso em segundo plano. Seu funcional é comparável com "eval"
$( ), mas não há descanso. É que é$(command) &isso que me confunde.