O programa no lado esquerdo de um pipe não recebe um EOF (que não é um sinal) quando o lado direito do pipeline termina. Obtém um SIGPIPE que diz para terminar. O problema é que você não está lendo nada do pipeline nem lendo nenhum dado do pipeline. Você provavelmente quer um loop while read
que irá ler stdin enquanto estiver vivo:
while read -r value; do
if [ "$value" = "1+1" ]; then
echo "2";
else
echo "0";
fi
done