Если вы хотите, чтобы вывод all перешел в файл журнала, вы можете использовать exec
для перенаправления:
exec >> "$logfile"
Возможно, вы также захотите перенаправить stderr: 2>&1
.
Если вы хотите, чтобы только ваши echo
команды были перенаправлены, вы можете подключить неиспользуемый поток (больше 2) для этого:
exec 3>> "$logfile"
ret=123
echo "Something happened $ret" >&3
# some logic
echo "Something else happened $ret" >&3
Обратите внимание, что эти подходы больше не открывают журнал заново для каждой записи - если вы переименуете файл журнала, выходные данные будут продолжать идти к нему, тогда как в исходном случае последующий вывод будет заканчиваться новым файлом со старым именем.