Sua saída de substituição de comando provavelmente tem espaços, levando à divisão de campo, etc. Use aspas:
$ echo foo > /tmp/TD_'hostname'_'date'_'pgrep java'
bash: /tmp/TD_'hostname'_'date'_'pgrep java': ambiguous redirect
$ echo foo > /tmp/"TD_'hostname'_'date'_'pgrep java'"
$ ls /tmp/TD*
/tmp/TD_muru-arch_Sat 26 Dec 16:14:29 IST 2015_