removido
(usa Nenhuma)
Enviado em 22/06/2015 - 16:11h
vinicius12 escreveu:
listeiro_037 escreveu:
Mostre-nos o que você já fez e no que está errando.
======3=====
if [ $grep -a $1 who ]
then
echo "contem a string"
else
echo "nao contem a string"
fi
Who serve prá dizer quem está logado.
Grep é um filtro que processa saídas de texto a partir de símbolos chamados de expressões regulares (regex).
Para o grep funcionar com o who é preciso usar um pipe e inverter o que você escreveu:
who | grep $1
Não precisa da opção -a porque a saída não é de um arquivo binário.
Como na saída do who apenas a primeira coluna é a dos usuários logado dá prá usar uma filtragem com o comando cut:
who | cut -d' ' -f1 | grep $1
Cut entende os dados como colunas separadas por um espaço em branco -d' ' e pega apenas a primeira coluna -f1.
Agora se você quiser que usuários da saída do who não saiam repetidos aí você usa o sort e o uniq:
who | cut -d' ' -f1 | sort | uniq | grep $1
Antes que eu esqueça, esse $1 funciona se for parâmetro passado pelo script via terminal ou se você criar uma função interna no script.
Se você quiser pegar uma string em tempo de execução aí você usa o comando read.
A parte do if está quase certa. Você joga a saída do grep para uma variável
TESTE="$(who | cut -d' ' -f1 | sort | uniq | grep $1)"
e depois testa no if se ela é vazia:
if [ -n "$TESTE" ]
then
...
else
...
fi
Leia os manuais dos comandos
* man who
* man test
* man grep
* man cut
* man sort
* man uniq
* help if
* help read
--
Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden