I have a basic script that outputs various status messages. e.g.

```
~$ ./myscript.sh
0 of 100
1 of 100
2 of 100
...

```

I wanted to wrap this in a parent script, in order to run a sequence of child-scripts and send an email upon overall completion, e.g. topscript.sh

```
#!/bin/bash
START=$(date +%s)
/usr/local/bin/myscript.sh
/usr/local/bin/otherscript.sh
/usr/local/bin/anotherscript.sh
RET=$?
END=$(date +%s)
echo -e "Subject:Task Complete\nBegan on $START and finished at $END and exited with status $RET.\n" | sendmail -v group@mydomain.com

```

I'm running this like:

```
~$ topscript.sh >/var/log/topscript.log 2>&1

```

However, when I run `tail -f /var/log/topscript.log` to inspect the log I see nothing, even though running top shows myscript.sh is currently being executed, and therefore, presumably outputting status messages.

Why isn't the stdout/stderr from the child scripts being captured in the parent's log? How do I fix this?

EDIT: I'm also running these on a remote machine, connected via ssh using pseudo-tty allocation, e.g. `ssh -t user@host`. Could the pseudo-tty be interfering?