Evitar que un proceso secundario (HandbrakeCLI) provoque la salida del script primario

Tengo un script de conversión por lotes para convertir .mkvs de varias dimensiones en .mp4s de tamaño ipod / iphone, recortando / ajustando a medida. Determinar las dimensiones originales, el recorte requerido, el archivo de salida funciona bien. Sin embargo, al completar con éxito la primera conversión, HandbrakeCLI hace que la secuencia de comandos principal se cierre. ¿Por qué sería esto? ¿Y cómo puedo detenerlo?

El código, tal como está actualmente:

#!/bin/bash
find . -name "*.mkv" | while read FILE
do
    # What would the output file be?
    DST=../Touch/$(dirname "$FILE")
    MKV=$(basename "$FILE")
    MP4=${MKV%%.mkv}.mp4

    # If it already exists, don't overwrite it
    if [ -e "$DST/$MP4" ]
    then
        echo "NOT overwriting $DST/$MP4"
    else

        # Stuff to determine dimensions/cropping removed for brevity

        HandbrakeCLI --preset "iPhone & iPod Touch" --vb 900 --crop $crop -i "$FILE" -o "$DST/$MP4" > /dev/null 2>&1

        if [ $? != 0 ]
        then
            echo "$FILE had problems" >> errors.log  
        fi
     fi
done

También lo intenté con una trampa, pero eso no cambió el comportamiento (aunque la última trampa sí se disparó)

trap "echo Handbrake SIGINT-d"  SIGINT
trap "echo Handbrake SIGTERM-d" SIGTERM
trap "echo Handbrake EXIT-d"    EXIT
trap "echo Handbrake 0-d"       0

Editado para agregar:

El hecho de que la trampa '0' se disparó me llevó a investigar por qué podría ser eso. Ejecutando comobash -x $script reveló que elfind | while read El ciclo está terminando prematuramente.

He refactorizado la búsqueda y la codificación en scripts separados. El bucle de búsqueda es ahora:

find . -name "*.mkv" | while read FILE
do
    handbrake-touch "$FILE"

    if [ $? != 0 ]
    then
        echo "$FILE had problems" >> errors.log  
    fi
done

El comportamiento sigue siendo el mismo: una codificación seguida de la terminación del bucle while. Si solo pongo un 'echo $ FILE' en lugar del 'handbrake-touch', se enumeran todos los archivos. El directorio actual no cambia (me preguntaba qué podría romper elfind | while)

Respuestas a la pregunta(1)

Su respuesta a la pregunta