Eu tenho um script bash com o seguinte:
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
Este script não será executado sem o -e. O que -e
faz para esse script? Além disso, o que faz $?
neste contexto?
-e
na página do manual (eu realmente quero ver uma resposta abordando isso).$?
contém o último código de saída (o doegrep
processo gerado acima).-e
está documentado emset
.if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
if
e[
. Este script não irá funcionar com-e
, porque segrep
não encontrar nada, então sob-e
o script será encerrado ali. Sem-e
, você tem a mensagem ao contrário: um status ($?
) de 0 significa que o grep encontrou o usuário. Note que este deve ser `grep '^ username:', a propósito (e se houver outro usuário com um nome mais longo?).#/bin/bash -e
o mesmo efeito que#/bin/bash
na linha 1 eset -e
na linha 2?Respostas:
Erro ao sair. Mais bandeiras
Se houver um erro, ele sairá imediatamente.
O $? é o status de saída do comando passado. No Linux, um status de saída 0 significa que o comando foi bem-sucedido. Qualquer outro status significaria um erro.
egrep "^ nome de usuário" / etc / passwd> / dev / null Procuraria o nome de usuário no arquivo / etc / passwd. Se encontrar, o status de saída $? será igual a 0. Se não o encontrar, o status de saída será outra coisa (não 0), portanto, "o eco não existe".
fonte
if egrep "^username" /etc/passwd >/dev/null
.set
necessário? : - /-e
é dado ao bash como um argumento de linha de comando. Todas as opções listadas emset
também são aceitas pelo bash em sua linha de comando - observe a primeira frase na seção Opções da página de manual.Todas as opções de linha de comando do bash estão documentadas
man bash
.fonte
set
necessário? : - /Seu script está incorreto, porque
exit status 0 - mean - tudo está OK, no caso do grep significa "OK, encontrou a string". status de saída! = 0 significa que algo está errado, no caso do grep 1 significa "não encontrado", 2 significa "não é possível abrir a entrada" ...
fonte