From a command to a shell function
So you've written this brilliant shell script, and now you've found that you can't pipe a command's output to a shell function…
#!/usr/bin/env bash
# This script is ~/dashprepender.sh.
# It prepends dashes.
function prependDash() {
input=$@
echo "- ${input}"
}
find ${HOME} -type d -exec prependDash {} \;
rob@freebsd$ ~/dashprepender.sh find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory find: prependDash: No such file or directory …
Or can you…?
#!/usr/bin/env bash
# This script is ~/dashprepender.sh.
# It prepends dashes.
function prependDash() {
input=$@
echo "- ${input}"
}
find ${HOME} -type d -print | while read dir; do prependDash ${dir}; done
or
for dir in `find ${HOME} -type d -print`; do
prependDash ${dir}
done
but this last one will get you into trouble if there are filenames with spaces.
| Responses are welcomed: rob[at]nerdstock.org |
![]() http://creativecommons.org/licenses/by-nc-sa/3.0/nl/deed.en |







