Alcance variable de Bash

Por favor, explícame por qué la última declaración de "eco" está en blanco? Espero que se haya incrementado en el bucle while a un valor de 1:

#!/bin/bash
OUTPUT="name1 ip ip status" # normally output of another command with multi line output

if [ -z "$OUTPUT" ]
then
        echo "Status WARN: No messages from SMcli"
        exit $STATE_WARNING
else
        echo "$OUTPUT"|while read NAME IP1 IP2 STATUS
        do
                if [ "$STATUS" != "Optimal" ]
                then
                        echo "CRIT: $NAME - $STATUS"
                        echo $((++XCODE))
                else
                        echo "OK: $NAME - $STATUS"
                fi
        done
fi

echo $XCODE

He intentado usar la siguiente declaración en lugar del método ++ XCODE

XCODE=`expr $XCODE + 1`

y tampoco se imprimirá fuera de la sentencia while. Creo que me estoy perdiendo algo sobre el alcance de las variables aquí, pero la página del viejo manual no me lo muestra.

Respuestas a la pregunta(7)

Su respuesta a la pregunta