O shell armazena o valor de saída do comando executado mais recentemente na variável ?
. Você pode atribuir seu valor a uma de suas próprias variáveis assim:
grep -i 'PATTERN' file
check=$?
Se você quiser agir com base nesse valor, use sua variável check
:
if [ "$check" -eq 0 ]; then
# do things for success
else
# do other things for failure
fi
ou você pode pular usando uma variável separada e ter que inspecionar $?
todos juntos:
if grep -q -i 'pattern' file; then
# do things (pattern was found)
else
# do other things (pattern was not found)
fi
ou, se você quiser "fazer as coisas" quando o padrão não for encontrado :
if ! grep -q -i 'pattern' file; then
# do things (pattern was not found)
fi
Salvar $?
em outra variável só é necessário se você precisar usá-la posteriormente, quando o valor em $?
tiver sido sobrescrito, como em
mkdir "$dir"
err=$?
if [ "$err" -ne 0 ] && [ ! -d "$dir" ]; then
printf 'Error creating %s (error code %d)\n' "$dir" "$err" >&2
exit "$err"
fi
No trecho de código acima, $?
será substituído pelo resultado do teste [ "$err" -ne 0 ] && [ ! -d "$dir" ]
. Salvá-lo aqui é realmente necessário apenas se precisarmos exibi-lo e usá-lo com exit
.