O valor de retorno de more é diferente no OSX e no Linux. Execute isto para ver qual é o valor de retorno em seu sabor do Unix:
more file_that_doesnt_exist; echo $?
No OSX, recebo 1 na falha e 0 no sucesso.
No Ubuntu e RedHat Linux, recebo 0 na falha e 0 no sucesso. Isso parece ser um bug.
Outra alternativa seria usar less . Parece retornar códigos de saída corretos no Ubuntu Linux.
Ainda outra alternativa seria usar:
{ cat file_that_doesnt_exist || echo nonexistent; } | more
O comando cat parece retornar os códigos de saída esperados no Linux.