Você está canalizando find
output para o loop while. O comando interno de leitura está lendo uma linha da saída de find
, não de stdin.
Você pode reestruturar assim: envia a saída find
para o loop while em um descritor de arquivo diferente. Isso deixa o stdin livre para a leitura interna.
while IFS= read -u3 -r -d '' FILE; do
if [ "$FILE" != "." -o "$FILE" != ".." ]; then
OUTPUT=$($FILE $STATUS)
case "$OUTPUT" in
*disabled* )
read -p "Do you wish to start $FILE ?" yn
case $yn in
[yY] | [yY][Ee][Ss] ) $FILE start ;;
[nN] | [nN][Oo] ) ;;
* ) echo "Please answer yes or no.";;
esac
;;
* ) echo "App $FILE is running" ;;
esac
fi
done 3< <(find /etc/init.d/* -name '*' -print0)
Isso usa uma substituição de processo , em vez de um canal, para ler de find