Em:
df -h | f
Você redirecionou df -h
output para f
standard in e depois chamou f
sem nenhum argumento, $@
está vazio.
Por outro lado:
df -h | f cat
Você redirecionou df -h
output para f
standard, em seguida, chamou f
com um argumento cat
. "$@"
dentro de f
expandido para cat
. cat
padrão concatenado em, que é df -h
output, para saída padrão.