Alterar:
filter > /app/me/logs/${1}.filtered
para:
filter "$@" > "/app/me/logs/${1}.filtered"
Por quê? Cada função tem sua própria lista de parâmetros posicionais. Você precisa fornecer a lista de parâmetros posicionais para a função que está chamando.
Em outras palavras:
O $1
dentro da função filter
não é o mesmo que o $1
no script principal.
Se apenas um parâmetro é o que você precisa:
filter "$1" > "/app/me/logs/${1}.filtered"
deve ser apenas o suficiente.