Parece que o :
s no seu script está sendo usado em vez de true
. Se grep
não encontrar uma correspondência no arquivo, ele retornará um código de saída diferente de zero. Como jw013 menciona em um comentário, se errexit
for definido, provavelmente por -e
na linha shebang, o script sairá se qualquer um dos grep
s não conseguir encontrar uma correspondência. Claramente, não é isso que o autor queria, então ele adicionou || :
para fazer com que o status de saída daquele comando composto em particular fosse sempre zero, como o mais comum (na minha experiência) || true
/ || /bin/true
.