De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Atribuição de Valores a Variáveis em Shell Scripts

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 29 de Maio de 1997

Variáveis são sequências de letras, digitos ou underscores, começando com uma letra ou underscore "_".

A atribuição de valor a uma variável irá depender da shell sendo utilizada. Na Bourne shell e compatíveis (sh), atribui-se o valor a uma variável da seguinte forma:

  DATE=6jun60

À variável DATE foi atribuído o valor 6jun60.

Outra característica extremamente útil é atribuir o valor de comandos a variáveis. Por exemplo, suponhamos que queiramos que a variável DATE assuma o valor da data corrente, no formato mmddyy:

  DATE=""date +%m%d%y""

O comando date, como especificado acima, irá retornar o valor 052797, onde 05 indica o mês de maio, 27 o dia do mês e 97 o dia do ano.

Importante notar as aspas invertidas "`". Ao se delimitar um comando por aspas invertidas você está indicando que está interessado no resultado do comando, que por sua vez será atribuído à variável.

Por exemplo, se desejassemos enviar uma mensagem a todos os usuários de determinado computador:

  #!/bin/sh
  
  for user in ""awk -F: '{print $1}' /etc/passwd""
  do
  	mail -s "Aviso Importante" $user < mensagem.importante
  	echo $user
  done 

O shell script acima, irá obter, com o auxílio do programa awk, uma listagem de todos os usuários da máquina, enviando em seguida uma mensagem a todos eles. À variável $user serão atribuídos tantos valores quantos os retornados pelo comando

  awk -F: '{print $1}' /etc/passwd

Observar que, no shell script, o comando está delimitado por aspas invertidas (`). Como os campos no arquivo /etc/passwd são delimitados por ":", faz-se necessário a especificação da diretiva "-F:" para que o comando awk possa selecionar corretamente a identificação do usuário ($1, ou o primeiro campo). Na linha onde se envia a mensagem o caracter "<" indica que a mensagem a ser enviada encontra-se dentro do arquivo "mensagem.importante". O título da mensagem é informado através da diretiva "-s" seguida pelo valor "Aviso Importante". O comando "echo $user" é apenas informativo e serve para monitorar o progresso da execução do comando.


Dica Humorística

HOW TO IDENTIFY YOUR SYSTEM ADMINISTRATOR:

Situation: Low Disk Space

TECHNICAL THUG: Writes a suite of scripts to monitor disk usage, maintain a database of historic disk usage, predict future disk usage via least squares regression analysis, identify users who are more than a standard deviation over the mean, and send mail to the offending parties. Places script in cron. Disk usage does not change, since disk-hogs, by nature, either ignore script-generated mail, or file it away in triplicate.

ADMINISTRATIVE FASCIST: Puts disk usage policy in motd. Uses disk quotas. Allows no exceptions, thus crippling development work. Locks accounts that go over quota.

MANIAC:

  # cd /home
  # rm -rf ""du -s * | sort -rn | head -1 | awk '{print $2}'"";

IDIOT:

  # cd /home
  # cat ""du -s * | sort -rn | head -1 | awk '{ printf "%s/*\n", $2}'"" | compress

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida