Ao trabalhar com comandos em Bash, você chegará a um ponto em que deve usar a saída de um determinado comando como um valor para uma determinada variável. A expansão de comando é um termo usado para se referir Substituição de comando onde a saída de um determinado comando é usado no lugar do comando. Idealmente, o comando é executado e seu valor substitui o comando e, na maioria dos casos, é usado ao trabalhar com variáveis.
A expansão do comando Bash é útil quando você deve usar uma determinada variável cujos valores ainda não sejam conhecidos, a menos que o comando seja executado primeiro. Este guia abrange vários exemplos para ajudar a entender como trabalhar com a substituição do comando bash.
Como usar a expansão do comando Bash
A expansão de comando pode ser usada de duas maneiras.
Você pode incluí -lo como na sintaxe abaixo:
$ (comando)
Como alternativa, você pode usar backticks, como mostrado abaixo.
'comando'
Quando você usa a substituição do Bash em um script, a saída do comando substituirá o comando quando for executado.
Por exemplo, se você precisar escrever um comando que imprima a data e a hora atuais e o tempo de atividade ao executar o script, poderíamos ter um script escrito como mostrado abaixo.
Criamos uma variável no script, mas seu valor depende da saída do comando. Além disso, estamos imprimindo o valor da variável declarada usando o eco comando. Esse é um caso de substituição do comando bash. Vamos executar o comando e ver como ele se comporta.
Observe que todas as linhas à direita ao imprimir a saída são excluídas quando você usa a substituição de comando. Por exemplo, vamos usar o comando SEQ Para imprimir valores de 1 para 10, pulando dois valores. Se executarmos o comando abaixo, notaremos que cada nova linha é contabilizada.
$ seq 1 2 10
No entanto, se você usar a substituição de comando para o mesmo comando, a saída seria diferente, pois as novas linhas são excluídas.
Expansão de comando Bash em loops
Se você tem um determinado script que deve executar uma determinada tarefa, mas os valores dessa variável dependem da saída do comando, você pode usar a expansão da basquete. Por exemplo, se você tivesse um arquivo contendo os nomes dos endereços IP, poderá executar um para loop para executar uma determinada tarefa com base nos nomes desse arquivo.
O script abaixo abre um arquivo usando o gato comando e imprime o conteúdo do arquivo no shell atual.
Aqui está a saída confirmando que você pode usar a substituição de bash com loops.
Expansão de comando e expansão de parâmetros
A expansão do comando Bash é quase semelhante à expansão dos parâmetros. Na substituição do bash, usamos $ (), enquanto para expansão de parâmetros, usamos $ . A expansão dos parâmetros protege uma variável da expansão de comando. Vamos ter um exemplo para entender.
No exemplo acima, estamos criando uma variável nomeada data. Se ecoarmos a variável usando a expansão do parâmetro, obtemos que imprimimos o valor da variável seguido pela palavra adicionada após o valor variável.
No entanto, no exemplo de substituição de comando, vemos que o comando data, que imprime a data e hora atuais, é substituído e a saída é usada no lugar do comando.
Portanto, se você não deseja que uma variável seja tratada como um caso de expansão de comando, use $ em vez de $ ().
Conclusão
A expansão do comando bash é a mesma que a substituição de comando. Este guia explicou o que significa expansão de comandos, e demos vários exemplos para ajudar a entender como você pode usar a expansão de comando para seus scripts bash. O principal argumento é que a substituição do comando é quando a saída de um comando é usada no lugar do próprio comando ao obter ou definir o valor de uma variável.