nerdstock.org

PROJECTS | MANUALS | OTHER
English   Nederlands

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
Creative Commons License
http://creativecommons.org/licenses/by-nc-sa/3.0/nl/deed.en

 


-i *.nerdstock.org/*
Nerds don't google, they grep.

OhReally.nl
http://OhReally.nl
Setara
http://setara.org
Dannik
http://dannik.nl
HoudtVan.je
http://www.houdtvan.je
FaciliPro
http://facilipro.nl
Ads by Nerdstock.org

Link: Trademarks used at this site