technology

Como armazenar ou atribuir um comando Linux em uma variável no Bash Shell Script

.

Você pode armazenar comandos do Linux como variáveis ​​em scripts de shell usando a sintaxe: VARIABLE_NAME=$(COMMAND_TO_BE_EXECUTED).

Depois de salvar o comando do Linux como uma variável no script de shell, você pode usá-lo em qualquer lugar do script chamando o nome da variável em vez de digitar o comando.

Por exemplo, você pode usar a variável para armazenar um comando que imprime o formato de data personalizado e usá-lo sempre que necessário no script, apenas atribuindo o nome da variável.

Mas como podemos usar essas variáveis ​​para executar diferentes comandos dentro do script? A resposta é simples: podemos usar o recurso de substituição de comandos e as variáveis ​​para executar comandos dentro do script.

Então, vamos dar uma olhada em como podemos aproveitar a substituição de comando para executar comandos dentro do script e buscar a saída desses comandos nas variáveis.

O que é Substituição de Comando?

Substituição de comando nos permite armazenar um comando em uma variável e depois executá-lo dentro do script simplesmente referindo-se ao nome da variável, e isso pode ser feito usando uma sintaxe especial, que se parece com isso:

variable_name=$(command)
variable_name=$(command [option ...] args1 args2 ...)
OR
variable_name=`command`
variable_name=`command [option ...] args1 args2 ...`

Com essa sintaxe, você pode salvar a saída de um comando em uma variável e usá-la posteriormente no script.

Depois de conhecer a sintaxe, vamos dar uma olhada em alguns exemplos para entender como ela funciona.

Exemplos

Para demonstrar essa sintaxe, podemos ver um exemplo em que imprimimos o formato de hora personalizado em hora, minuto e segundo e, após sua execução bem-sucedida, executamos o mesmo comando em um script curto.

$ now=$('date' '+%H:%M:%S')
$ echo "Time is now $now"

Você pode ver que o comando está funcionando conforme o esperado na saída da seção abaixo.

A saída do comando acima

Veja também: Guia abrangente sobre o uso do comando date no Linux

Agora crie um arquivo de script usando qualquer um de seus editores de texto favoritos e copie a seguinte linha de texto e execute o arquivo usando o bash filename.sh

#! /bin/bash 
now=$('date' '+%H:%M:%S')
echo "Time is now $now"

Agora crie um arquivo de script com qualquer um de seus editores de texto favoritos e cole a seguinte linha de texto nele e execute o arquivo com o bash filename.sh comando.

resultado do script
resultado do script

Você pode obter o mesmo resultado usando backtick, mas para facilitar a leitura, não é recomendável usá-lo, pois torna o código mais difícil de entender.

#! /bin/bash 
now=`'date' '+%H:%M:%S'`
echo "Time is now $now"

Para adicionar alguma complexidade aos dados variáveis, você pode canalizar os resultados de qualquer comando para outro comando e armazenar o resultado em uma variável.

Por exemplo, se você quiser fazer o ls comando saída para o grep comando para obter uma contagem total de todos os arquivos html no diretório, você pode usar a seguinte sintaxe de comando:

$ files_count=$(ls /home/shen/html files | grep -c ".html") 

Para chamar a variável, você pode simplesmente referenciar a variável “file_count”, assim:

$ echo "Total number of html file in this following directory is $files_count"

Se desejar, você também pode salvar dados variáveis ​​em formato multilinha colocando os dados entre aspas simples ou duplas e separando cada linha com um caractere de barra invertida.

#! /bin/bash
files_count=$(ls /home/shen/html files/|
grep ".html"|
wc -l)

echo "Total number of html file in this following directory is $files_count"

Você também pode salvar dados variáveis ​​em uma matriz e acessá-los usando números de índice, então, para demonstrar, criei um arquivo de script básico que fará um loop e listará todos os arquivos que terminam com a extensão “.html” removendo o espaço em branco entre nomes de arquivos usando o comando sed.

#! /bin/bash
files_count=$(ls /home/shen/html files/| grep ".html" | sed  's/s+/-/g')

files_array=($files_count)

for i in ${!files_array[@]}; do
  echo "On element $i is ${files_array[$i]}"
done

Saída

Iterar o resultado para imprimir os dados da matriz
Iterar o resultado para imprimir os dados da matriz

Embrulhar

Isso conclui nossa discussão sobre como armazenar ou atribuir um comando Linux como uma variável em um script shell bash. Se você tiver alguma dúvida ou comentário, sinta-se à vontade para deixá-los na seção de comentários abaixo.

Até lá, coloque os pés para cima e relaxe. Como sempre, o próximo artigo será publicado em breve.

.

Mostrar mais

Artigos relacionados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo