Como uma variável é mantida no Linux?

O shell de linha de comando do sistema operacional Linux é uma ferramenta poderosa que é, em essência, um interpretador de linguagem de programação. Como em qualquer outra linguagem de programação, o shell de comando permite usar variáveis ​​para armazenar, recuperar e manipular dados.

Configurando e Recuperando Valores Variáveis

No shell de comando bash, que é o shell padrão usado no Linux, você pode definir uma variável usando a sintaxe geral NAME = VALUE . Por exemplo, no prompt de comando, você pode digitar:

 x = 5 

E uma variável chamada x será definida para o valor numérico 5 . Os nomes das variáveis ​​podem estar em maiúsculas ou minúsculas, ou uma mistura de ambos, e diferenciam maiúsculas de minúsculas. Ao definir a variável, não deve haver espaços entre o nome da variável, o sinal de igual e o valor.

Não há necessidade de declarar a variável antecipadamente ou especificar seu tipo de dados. Bash determina o tipo da variável com base em seu valor.

Por exemplo, nossa variável também pode conter uma string:

 x = olá 

Para uma string simples, não é necessário colocar a string entre aspas, mas se a string contiver espaços, você deve colocá-la entre aspas duplas:

 x = "Olá, mundo!" 

Para recuperar o valor da sua variável, prefixe-o com um cifrão. Por exemplo, para ver o valor de x usando o comando echo, você executaria:

 echo $ x 

Quais saídas:

 Olá Mundo! 

O que acontece aqui é que o shell pega o valor da variável e insere no seu comando. Você pode se referir à variável em qualquer lugar do seu comando, mesmo dentro de uma string entre aspas duplas:

 echo "$ x $ x Alguém pode me ouvir? Eu disse, $ x" 
 Olá Mundo! Olá Mundo! Alguém pode me ouvir? Eu disse, olá mundo! 

Dica: As variáveis ​​só são interpretadas dentro de uma string se você usar aspas duplas. Se você usar aspas simples, o nome da variável será interpretado literalmente, sem interpretação:

 echo '$ x $ x Alguém pode me ouvir? Eu disse, $ x ' 
 $ x $ x Alguém pode me ouvir? Eu disse, $ x 

Configurando o valor de uma variável para ser a saída de um comando

Para definir o valor de sua variável como saída de um comando específico, use o formulário:

 NAME = $ (COMMAND) 

Por exemplo, se seu nome de usuário for "steven", executar o comando whoami retornará o valor steven . Você pode definir isso para uma variável:

 myname = $ (whoami) 
 echo $ myname 
 steven 

Você pode fazer isso por qualquer comando. Se o comando receber argumentos, não será necessário colocar o comando entre aspas. Tudo dentro dos parênteses será executado como um comando:

 x = "Olá, mundo!" 
 x = $ (echo $ x $ x $ x) 
 echo $ x 
 Olá, mundo! Olá, mundo! Olá, mundo! 

Usando variáveis ​​em um script simples

Vamos ver como podemos usar uma variável em um script de backup simples. Digamos que você queira fazer backup de tudo nos documentos do diretório em seu diretório pessoal. O script arquivará tudo nesse diretório, e quaisquer diretórios contidos nele, em um arquivo tar cujo nome contenha a data atual. Vamos manter os backups em um diretório chamado backups em seu diretório home (assumiremos que esse diretório já existe. Caso contrário, você pode executar o mkdir ~ / backups para criá-lo).

Abra um editor de texto e coloque este texto em um novo arquivo:

 #! / bin / bash MYFILENAME = ~ / backups / documents-backup - $ (data +% Y-% m-% d) .tar.gz 

tar -czf $ OUTPUTFILE ~ / documentos

Vamos ver cada linha desse script. A primeira linha, #! / Bin / bash, declara o script como um arquivo executável e especifica que ele deve ser executado com / bin / bash, que é o executável do shell de comando bash. Nota: O arquivo não será executável até que nós chmod o arquivo mais tarde, mas esta linha é necessária em qualquer script bash apropriado.

A segunda linha define a variável MYFILENAME, que conterá o nome do arquivo que contém nosso backup. A primeira parte do nome do arquivo é nosso diretório de backups, ~ / backups .

Nota: O caractere til ( ~ ) é um nome de diretório especial que sempre representa nosso diretório inicial.

Em seguida, temos o início do nome do arquivo, documentos-backup- . Em seguida, inserimos a data atual usando o comando date, o símbolo de mais e a string de formato de data % Y-% m-% d . Por exemplo, se a data fosse 23 de fevereiro de 2015, isso retornaria em 2015-02-23 .

Finalmente, usamos a extensão .tar.gz, que é a extensão de nome de arquivo apropriada para um arquivo tar compactado com gzip. Portanto, se executássemos esse script em 23 de fevereiro de 2015, o valor de MYFILENAME seria ~ / backups / documents-backup-2015-02-23.tar.gz . Se o executássemos em 7 de maio de 2015, o valor seria ~ / backups / documents-backup-2015-05-07.tar.gz .

A terceira linha é o comando que cria o arquivo. Usamos o comando tar com a opção -czf, que criará ( c ) um arquivo gzipado ( z ) usando o nome do arquivo especificado ( f ). Em seguida, especificamos o nome do arquivo, referindo-nos à variável que criamos na linha 2, OUTPUTFILE . Por fim, dizemos ao tar o que queremos arquivar: o diretório ~ / documents .

Para executar o script, salve o arquivo de texto em seu diretório pessoal (ou em qualquer outro lugar que preferir) e dê a ele um nome apropriado, por exemplo, backup-my-docs . Não há necessidade de fornecer uma extensão de nome de arquivo. Saia do editor de texto e torne o arquivo executável usando o comando chmod + x, por exemplo:

 chmod + x ~ / backup-my-docs 

Agora você pode executar o script. Por exemplo, se o script estiver em seu diretório de trabalho, você poderá executá-lo com:

 ./backup-my-docs 

Ou, se estiver em seu diretório home, você pode executá-lo a partir de qualquer diretório com o comando:

 ~ / backup-my-docs