Escolar Documentos
Profissional Documentos
Cultura Documentos
Shell Script
Estruturas de decisão
Tópicos e conceitos
Expressões regulares
Tempo previsto
150-180 minutos
para as atividades
Resposta:
#!/bin/bash
if [ -e $1 ]
then
echo " O arquivo $1 existe"
else
echo "Arquivo inexistente"
fi
Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
Dica: utilize o comando ls -lh, que traz a informação do arquivo, combinado com o comando cut, para
trazer somente o campo do tamanho do arquivo.
Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script que verifica se um arquivo existe"
echo "Uso: $0 arquivo"
exit
else
if [ -e $1 ]
then
echo " Tamanho do arquivo $1: `ls -lh $1 | cut -d " " -f 5`"
else
echo "Arquivo inexistente"
fi
fi
#! /bin/bash
if [ $# = 1 ]
then
if [ -f $1 ]
then
echo "este arquivo já existe!"
else
touch $1
chmod +rwx $1
echo " O arquivo $1 foi criado"
echo -n "Deseja edita-lo agora (s/n)? "
read opcao
if [ $opcao = "s" ]
then
vi $1
fi
fi
else
echo "Uso do script: $0 nome_arquivo"
fi
Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script que verifica se um usuário é válido no sistema."
echo "Uso: $0 nome_usuário"
echo "Você deve passar o nome de um usuário"
exit
else
grep ^$1: /etc/passwd >/dev/null
if [ $? -eq 0 ]
then
echo "O usuário $1 é válido"
else
echo "O usuário $1 não é válido"
fi
fi
Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "recupera nome e telefone a partir do arquivo agenda"
echo "O nome deve ser passado por parâmetro"
echo "Uso: $0 nome"
exit 1
else
grep $1 agenda > /dev/null
if [ $? -eq 0 ]
then
echo "recuperando informações"
grep $1 agenda
fi
fi
Dica: utilize os comando pwd para ver diretório corrente, ls para lista-lo e wc para contar.
Resposta:
#!/bin/bash
dir=`pwd`
if [ $quant -gt 0 ]
then
else
fi
Resposta:
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Script que verifica qual é o maior entre 3 números"
echo "Entre com os números nos parâmetros"
echo "Uso: $0 numero1 numero2 numero3"
exit 1
else
if [ $1 -ge $2 ] && [ $1 -ge $3 ]
then
maior=$1
elif [ $2 -ge $1 ] && [ $2 -ge $3 ]
then
maior=$2
else
maior=$3
fi
echo "O número $maior é o maior deles"
fi
Resposta:
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Script que verifica se o primeiro argumento é substring do segundo"
echo "Uso: $0 substring palavra"
exit
else
if [[ "$2" =~ "$1" ]]
then
echo "$1 é substring de $2"
else
echo "não há relação"
fi
fi
Crie um script que recebe o nome de um arquivo texto como parâmetro, verifica se o usuário
possui permissão de leitura deste arquivo e, caso tenha, exiba as seguintes informações sobre o
arquivo: número de caracteres, número de palavras e número de linhas do arquivo (Dica: utilize
o comando wc)
Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script conta informações de um arquivo texto"
echo "Uso: $0 arquivo"
exit
else
if [ -r $1 ]
then
if [[ `file $1` =~ "ASCII text"$ ]]
then
carac=`wc -c $1 | cut -d " " -f 1`
pal=`wc -w $1 | cut -d " " -f 1`
lin=`wc -l $1 | cut -d " " -f 1`
echo "O arquivo $1 possui $carac caracteres, $pal palavras e $lin linhas"
else
echo "O arquivo deve ser do tipo texto"
fi
else
echo "O arquivo não tem permissão de leitura ou não existe"
fi
fi
Resposta:
#!/bin/bash
mes=`date +"%m"`
diasem=`date +"%w"`
case $diasem in
1) dia="segunda"
;;
2) dia="terça"
;;
3) dia="quarta"
;;
4) dia="quinta"
Resposta:
#!/bin/bash
echo "1 - Exibir status da utilização das partições do sistema"
echo "2 - Exibir relação de usuário logados"
echo "3 - Exibir data/hora"
echo "4 - Sair"
echo "Informe sua opção: "
read opcao
case $opcao in
1) echo "As partições do sistema estão sendo usadas desta forma"
df -h
;;
2) echo "Usuários Logados"
who
;;
3) echo "Data e hora atuais"
date
;;
4) echo "Saindo do sistema"
;;
*) echo "Você deve digitar as opções de 1 a 4"
Esac
Dica: use o padrão de comparação das expressões regulares para verificar se o parâmetro
contém somente números: [ "$2" =~ ^[+-]?[0-9]*$ ]
Resposta:
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Calculadora simples"
echo "Uso: $0 operação (som,sub,mul,div) operando1 operando2"
exit
else
if [[ "$2" =~ ^[+-]?[0-9]*$ && "$3" =~ ^[+-]?[0-9]*$ ]]
then
case $1 in
som) ((op=$2+$3))
echo "A soma dos dois numéros é: $op"
;;
sub) ((op=$2-$3))
echo "A subtração dos dois numéros é: $op"
;;
mul) ((op=$2*$3))
echo "A multiplicação dos dois numéros é: $op"
;;
div) ((op=$2/$3))
echo "A divisão dos dois numéros é: $op"
;;
*) echo "Você deve digitar uma das operações matemáticas (som, sub, mul, div)"
esac
else
echo "numero inválido"
fi
fi
Crie um script que recebe o nome de um arquivo como parâmetro e que, caso este arquivo não
exista, escreva a lista de arquivos de /home neste arquivo. Se o arquivo existir, exibe uma
Resposta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Script escreve o conteúdo de /home no arquivo"
echo "O arquivo deve ser passado por parâmetro"
echo "Uso: $0 arq"
exit 1
else
if [ -f $1 ]
then
if [ ! -w $1 ]
then
echo " O arquivo $1 já existe e não tem permissão de escrita"
else
echo " O arquivo $1 já existe. O que deseja fazer?"
echo "1 - substituir seu conteúdo por este"
echo "2 - adicionar no final do arquivo"
echo "3 - sair"
read opcao
case $opcao in
1) echo "substituindo conteúdo pelo /home"
ls /home > $1
;;
2) echo "adicionado no final do arquivo $1 conteúdo de /home"
ls /home >> $1
;;
3) echo "deixando o script"
exit
esac
fi
else
echo " criando o arquivo $1 com o conteúdo de /home"
ls /home > $1
fi
fi