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.
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