Resumindo: basta remover a parte >/dev/tty
de dbbackup.sh
; use apenas:
echo $TARFILE
Isto irá imprimir $ TARFILE para a saída padrão, isto é, para a tela se você estiver rodando dbbackup.sh
em um terminal, ou para um arquivo / pipe se o redirecionamento estiver no lugar (como acontece com o backquote do shell / $(...)
expansão).
Há também outra razão pela qual a coisa não funciona, mesmo se você corrigir o problema acima: o script dbbackup.sh
imprime o nome do arquivo tar na saída padrão, mas na linha
DBBACKUP="'dbbackup.sh >&/dev/null'"
você está descartando qualquer saída proveniente de dbbackup.sh
(redirecionando-a para /dev/null
). Se você quisesse descartar erros, use o redirecionamento 2>/dev/null
.
Mais uma história: a linha
echo $TARFILE > /dev/tty
redireciona a saída do comando echo
para /dev/tty
(o terminal ao qual o processo atual está anexado) em vez de imprimir para o fluxo de saída padrão compartilhado por outros comandos no script dbbackup.sh
. Portanto, quando você redireciona ainda mais a saída de dbbackup.sh
em dbbackup.sh >&/dev/null
, esse segundo redirecionamento não afeta o comando echo
.
Você pode querer ler um pouco mais sobre redirecionamento de shell e command substitution .