Como usar as expansões $ e $ {} em um script de shell

Como usar as expansões $ e $ {} em um script de shell
Se você estiver usando um sistema Linux, já deve saber o quão crucial é uma interface de shell para interagir com o seu sistema. Na maioria das distribuições Linux, Bash é o shell padrão que usamos para executar comandos e executar scripts. Um script de shell é um conjunto de comandos que, quando executados, é usado para desempenhar algumas funções úteis no Linux. Esse .O arquivo SH, escrito por um usuário, contém todos os comandos usados ​​para executar uma tarefa para que não precisemos executar esses comandos manualmente, um por um.

Neste tutorial, explicaremos duas das expansões mais úteis de bash usadas em scripts de shell:

  • $ () - a substituição do comando
  • $ - a substituição de parâmetros/expansão variável

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.