Piping to shell functions

Era uma vez, descobri a necessidade de saber se uma função estava sendo direcionada quando chamada. Esta função pode analisar IDs de torrent da saída de transmission-remote -lvia pipe ou aceitar uma lista de IDs de torrent. Dessa forma, posso canalizar a lista de torrents para grep para filtragem rápida e, em seguida, canalizar para minhas funções auxiliares para operar nos torrents filtrados.

function ttm {
local torrents
local target

if [[ ! -t 0 ]]; then
# We're being fed on stdin
torrents
=()

while read line; do
torrents
+=( $(echo $line | awk '{print $1}') )
done

torrents
=${(j:,:)torrents}
target
=$(realpath "$1")
echo
"Moving torrents: ${torrents} -> ${target}."
elif [[ ! -z "$1" ]]; then
torrents
="$1"
target
=$(realpath "$2")
fi

[[ -z "$torrents" ]] && echo "Won't move all torrents!" && return 2
[[ -z "$target" ]] && echo "Please specify a target folder" && return 2

tt
"-t${torrents}" --move "${target}"
}