Způsob, který navrhujete, je ve skutečnosti dokonale platný. Manuál Bash uvádí syntaxi deklarace funkce následovně (důraz):
Funkce jsou deklarovány pomocí této syntaxe:
name () compound-command [ redirections ]nebo
function name [()] compound-command [ redirections ]
 Takže by to bylo dokonale platné a nahradilo by to obsah outfile s argumentem myfunc :
myfunc() {
    printf '%s\n' "$1"
} > outfile
 Nebo pro připojení k outfile :
myappendfunc() {
    printf '%s\n' "$1"
} >> outfile
I když však můžete název cílového souboru vložit do proměnné a přesměrovat se na ni, například takto:
fname=outfile
myfunc() { printf '%s\n' "$1"; } > "$fname"
Myslím, že je mnohem jasnější provést přesměrování tam, kde funkci voláte – stejně jako doporučeno v jiných odpovědích. Jen jsem chtěl upozornit, že můžete mít přesměrování jako součást deklarace funkce.
A to není bashismus:specifikace POSIX Shell také umožňuje přesměrování v příkazu definice funkce.
Proveďte přesměrování při volání funkce.
#!/bin/bash
initialize() {
  echo 'initializing'
  ...
}
#call the function with the redirection you want
initialize >> your_file.log
Případně otevřete subshell ve funkci a přesměrujte výstup subshell:
#!/bin/bash
initialize() {
  (  # opening the subshell
    echo 'initializing'
    ...
  # closing and redirecting the subshell
  ) >> your_file.log
}
# call the function normally
initialize
 Můžete použít pro exec pro přesměrování shellu si nejsem jistý, zda to bude fungovat pro funkce
exec > output_file
function initialize {
  ...
}
initialize