Neste tutorial, explicaremos duas das expansões mais úteis de bash usadas em scripts de shell:
Uma expansão no shell é realizada no script depois de ser dividido em tokens. Um token é uma sequência de caracteres considerados uma única unidade pela concha. Pode ser uma palavra ou um operador.
Executamos todos os exemplos e scripts mencionados neste artigo em um sistema Debian 10 Buster. No entanto, você pode facilmente replicá -los na maioria das conchas Linux. Estamos usando a linha de comando do Debian padrão, o terminal, para este tutorial. No Debian, você pode acessá -lo através da barra de pesquisa do lançador de aplicativos da seguinte forma:
Para acessar o lançador de aplicativos, basta pressionar a tecla Super/Windows no seu teclado.
Substituição de comando $ ()
De acordo com o manual oficial de referência do GNU Bash:
“A substituição de comando permite que a saída de um comando substitua o próprio comando. Bash executa a expansão executando o comando e substituindo a substituição do comando pela saída padrão do comando, com qualquer linha de novas linhas de fora excluída. As novas linhas incorporadas não são excluídas, mas podem ser removidas durante a divisão de palavras.” A substituição de comando ocorre quando um comando é fechado da seguinte forma:
$ (comando)
ou
'comando'
Por exemplo, os seguintes comandos de eco substituem a saída do comando da data como entrada:
$ echo $ (data)
$ eco 'data'
Você também pode usar a substituição de comando para atribuir valor a uma variável. Por exemplo, imprimiremos a data de hoje através da variável hoje da seguinte maneira:
$ Today = $ (data)
$ echo "$ Today"
Outra utilidade da substituição do comando está em loops de shell para obter entrada. Aqui, tentaremos imprimir todos os .Arquivos TXT em nossa pasta doméstica usando a substituição de comando:
para f in/home/sana/*.TXT
fazer
eco "$ f"
feito
Usando a substituição de comando em um script de shell
Os exemplos acima são algumas maneiras pelas quais você pode utilizar o poder de substituição de comando em seu script de shell. Aqui está um relatório de status de amostra que podemos imprimir usando o seguinte script de shell:
#!/bin/sh
Relatório de status *** eco *** ***
Hoje = $ (data)
eco "hoje é $ hoje"
Usuários = $ (OMS | WC -l)
eco "$ usuários usuários estão atualmente conectados"
Uptime = $ (data; tempo de atividade)
eco "o tempo de atividade é $ uptime"
A substituição de comando foi usada três vezes neste script; Na impressão da data, conectado aos usuários e tempo de atividade. Salvamos o script da seguinte forma:
O fez executável e depois o executou pelo seguinte comando:
$ chmod +x status.sh
$ ./statys.sh
Aqui está a saída do nosso status.script sh:
Você pode, é claro, criar scripts mais significativos seguindo os exemplos que acabamos de mencionar.
$ Substituição/expansão do parâmetro
Um parâmetro, em Bash, é uma entidade usada para armazenar valores. Um parâmetro pode ser referenciado por um número, um nome ou por um símbolo especial. Quando um parâmetro é referenciado por um número, ele é chamado de parâmetro posicional. Quando um parâmetro é referenciado por um nome, é chamado de variável. Quando um parâmetro é referenciado por um símbolo especial, significa que eles são parâmetros de autooset com usos especiais.
Expansão/substituição de parâmetros é o processo de buscar o valor da entidade/parâmetro referenciada. É como se você estivesse expandindo uma variável para buscar seu valor.
A sintaxe de expansão dos parâmetros mais simples possível é a seguinte:
Aqui está como você pode usar a expansão dos parâmetros em Bash:
$ parâmetro
Por exemplo, o uso mais simples é substituir o parâmetro por seu valor:
$ name = "John Doe"
$ echo “$ name”
Este comando substituirá o valor da variável "nome" a ser usado pelo comando echo:
Você pode estar pensando que o mesmo pode ser alcançado evitando os aparelhos encaracolados da seguinte maneira:
A resposta é que, durante a expansão dos parâmetros, esses aparelhos encaracolados ajudam a delimitar o nome da variável. Vamos explicar o que queremos dizer com limitação aqui. Deixe -me executar o seguinte comando no meu sistema:
$ echo "O nome da pessoa é $ name_"
O resultado não imprimiu o valor do nome da variável como o sistema achou que eu estava se referindo à variável "nome_". Assim, meu nome variável não foi "delimitado". Os aparelhos encaracolados no exemplo a seguir delimitarão o nome da variável e retornarão os resultados da seguinte forma:
$ echo "O nome da pessoa é $ nome _"
Aqui estão todas as maneiras pelas quais as variáveis são substituídas no shell:
$ variável | Este comando substitui o valor da variável. |
$ variável: -word | Se uma variável for nula ou se não estiver definida, o Word será substituído por variável. O valor da variável não muda. |
$ variável: = word | Se uma variável for nula ou se não estiver definida, o valor da variável será definido como Word. |
$ variável:?mensagem | Se uma variável for nula ou se não estiver definida, a mensagem será impressa no erro de bash padrão. |
$ variável:+word | Se variável está definido, palavra é substituído por variável. No entanto, o valor da variável em si não muda. |
Os exemplos acima são algumas maneiras pelas quais você pode utilizar o poder da substituição variável em Bash. Você pode incorporar essas maneiras de usar a expansão em seus scripts de shell para alcançar sua tarefa de maneira ideal.