if (( ${#} == 0 )) ; then while read -r __my_function ; do my_function "${__my_function}" done else target_utility "${@}" fi
I like it pretty well, in many ways more than G-Man's answer. I like the use of while read. I'd probably prefer non-recursive solution most of the time though, esp. if instead of a function we would be spawning a subshell (script) to achieve the recursion, like in ...