Pesquisa de site

Uma visão das "variáveis" do Linux na linguagem Shell Scripting - Parte 9


Já escrevemos uma série de artigos sobre Linux Shell Scripting que foram calorosamente recebidos naquela época e muito relevantes até agora. Aqui está o link para a coleção de artigos sobre scripts de shell.

  1. Aprenda scripts de shell do Linux

Aqui neste artigo veremos as variáveis, sua execução e sua implementação em shell script.

Salvando uma saída

A saída de um comando pode ser redirecionada para a saída padrão ou para um arquivo e também pode ser armazenada em uma variável. Se a saída de um comando for grande o suficiente para não caber na tela, teremos apenas a opção de salvar a saída em um arquivo em uma variável. Uma vantagem de salvar a saída em variável é a velocidade de exame mais rápida. As variáveis são salvas na memória e, portanto, tendem a ser rápidas em comparação com a recuperação do arquivo.

Variáveis na linguagem de script

Variáveis são um componente importante usado em scripts Shell e são declaradas usando o comando bash “Declare”. Para declarar uma variável, digamos ‘nível‘, precisamos executar o comando abaixo.

declare LEVEL

Nota: Precisamos usar “typecast ”, uma instrução integrada para compatibilidade do shell korn. A ‘declaração’ é mais avançada e contém todos os recursos, portanto é recomendada ao usar BASH.

Regras
  1. O nome de uma variável deve justificar o uso da variável no script.
  2. É altamente recomendável usar o mesmo nome de variável em todo o programa.
  3. O nome das variáveis pode estar em letras maiúsculas ou minúsculas, mas por convenção os comandos do shell estão em letras minúsculas e, portanto, devemos usar o nome das variáveis em letras maiúsculas, para evitar qualquer confusão. por exemplo, TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, etc.

Implementação

Uma variável pode receber um valor usando um sinal de igual (=). Para atribuir uma string vazia a uma variável não devemos fornecer nenhum valor após o sinal de igual.

LEVEL =

Verifique o valor armazenado na variável ‘LEVEL’ como.

printf "%i" $LEVEL

printf, o comando que a maioria dos programadores de ‘C’ conhece, imprime dados. %i – Representa número inteiro. Podemos substituí-lo por %c para caractere ou %c para string, como e quando necessário.

$LEVEL: Observe o ‘$‘ que funciona como substituto de valor para a variável ‘LEVEL’.

Saída de amostra
printf "%i" $LEVEL
0

Atribua um valor à variável.

LEVEL=0

Verifique os dados armazenados na variável.

printf "%i" $LEVEL
0

NOTA: É interessante notar que em ambos os casos, quando não atribuímos o valor à variável e quando atribuímos o valor '0<' para a variável 'LEVEL' gera 0. Embora a saída seja a mesma em ambos os casos, o shell script trata a declaração da variável de maneira diferente.

Atribua um novo valor à variável.

LEVEL=121

Verifique os dados armazenados na variável.

printf "%i" $LEVEL
121

Desmarcar uma variável

Declare é um comando BASH e cria variáveis somente quando executado. A variável assim criada permanece na memória até que o script pare ou a variável seja destruída.

unset LEVEL

Variáveis predefinidas no BASH

BASH tem mais de 50 variáveis predefinidas. Algumas dessas variáveis têm um significado especial associado ao BASH, por exemplo, uma variável RANDOM gera um número aleatório. Se não for definido e definido novamente, o valor original da variável será perdido para sempre. Portanto, é aconselhável não usar nenhuma variável definida pelo sistema.

Aqui está uma lista de algumas variáveis BASH úteis.

  1. BASH—O nome completo do Bash.
  2. BASH_ENV — Em um script de shell, o nome do arquivo de perfil executado antes do início do script.
  3. BASH_VERSION — A versão do Bash (por exemplo, 2.04.0(1)-release).
  4. COLUNAS—O número de caracteres por linha no seu display (por exemplo, 80).
  5. HOSTNAME—O nome do computador. Em algumas versões do Linux, este pode ser o nome da máquina. Em outros, pode ser um nome de domínio totalmente qualificado.
  6. HOSTTYPE—Tipo de computador.
  7. HOME—O nome do seu diretório inicial.
  8. OSTYPE — O nome do sistema operacional.
  9. PATH — Lista separada por dois pontos de caminhos de pesquisa para encontrar um comando para executar.
  10. PPID—O ID do processo pai do shell.
  11. PROMPT_COMMAND — Comando a ser executado antes da configuração da string de prompt primária PS1.
  12. PWD—O diretório de trabalho atual (conforme definido pelo comando cd).
  13. RANDOM — Retorna um número aleatório entre 0 e 32767 cada vez que é referenciado.
  14. SHELL—O shell preferido para usar; para programas que iniciam um shell para você.
  15. TERM—O tipo de emulação de terminal (por exemplo, console).

A regra da divisão de palavras.

LEVEL=0
printf "%i" $LEVEL
0

AND

LEVEL=”0”
printf "%i" $LEVEL
0

Em ambos os casos, a saída permanece a mesma. Então, qual é a diferença no resultado ao usar a cotação?

Vamos verificar o mesmo com diferentes dados variáveis.

LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
printf "%i" $LEVEL
0

Sem mencionar que a saída não está correta. BASH está ocupando o espaço após ‘0’ como finalização e, portanto, o valor da variável é definido como ‘0’. Agora tentamos usar cotação para variáveis conforme abaixo.

LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
printf "%s" $LEVEL 
0;1;2;3;4;5

Ainda assim, o resultado não está correto. O BASH pegou os valores das variáveis e removeu todos os espaços entre eles. Portanto, printf não interpretou 0,1,2,3,4,5 como valores distintos. Então, qual é a solução?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Sim! Colocar a substituição de variável entre aspas é a solução. As cotações agrupam caracteres no shell e interpretam os caracteres especiais de maneira significativa.

As cotações podem ser usadas consecutivamente e é uma boa ideia incluir as substituições de variáveis entre aspas. Além disso, pode ser usado para separar o texto geral das citações. Aqui está um exemplo.

LEVEL=5 
FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Separar pedaços de texto citado com espaço resultará no mesmo problema discutido acima. O bash tratará o espaço em branco como encerramento. Outra forma de substituição de variável é.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Aspas simples restringem o BASH de imprimir caracteres especiais.

printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

A barra invertida (/)

A barra invertida funciona como aspas simples para um caractere. Você já pensou como vai imprimir ()?

printf "%c" "\""

Quando %q agrupado com printf, fornece barra invertida após cada palavra para garantir o espaçamento entre palavras.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

É tudo por agora. Sempre tentamos fornecer aos nossos leitores artigos que sejam úteis para eles de vez em quando. O artigo coberto acima é vasto, portanto, o restante dos tópicos com exemplos serão produzidos no próximo artigo, que incluirá ‘Atributos de variável’, ‘Exportação de variável’ etc.

Até lá, fique ligado e conectado em linux-console.net. Não se esqueça de nos fornecer seus valiosos comentários na seção de comentários abaixo.