Em:
cmd1 | cmd2
bash
run cmd2
em uma subshell, portanto, alterar a variável não será visível para o shell pai.
Você pode fazer:
#!/usr/bin/env bash
EMAIL="I echo without 'nope'"
while read line; do
if [ 73523 -lt 86400 ]
then
echo "Hasn't been backed up in over a day"
EMAIL="$EMAIL nope"
fi
done < <(ls)
echo "$EMAIL"
ou usando zsh
ou ksh
, que executará cmd2
no mesmo processo de shell.