X-Git-Url: http://git.iain.cx/?p=profile.git;a=blobdiff_plain;f=opt%2Fbin%2Ffind_working;h=454e365c69785181d533679073ddf502ac6859dc;hp=77bf17e0a98e6294b805a970eb365cd7913f668e;hb=6b31a2df164c14ef4fb443f6eb617b83b14fd60d;hpb=a8aeed388f90fa3cdc9a2efcafe56322f6bb2795 diff --git a/opt/bin/find_working b/opt/bin/find_working index 77bf17e..454e365 100755 --- a/opt/bin/find_working +++ b/opt/bin/find_working @@ -4,6 +4,7 @@ # Usage: find_working [options] # Options: -A Don't test arguments to executable files. # -a Use arguments to test executable files. Default --help. +# -g Search string in output. Default . # -q Don't print path to prog. Just exit 0 if found. # -x Don't try to execute unreadable files. Assume success. # -X Don't try to execute unreadable files. Assume failure. @@ -12,10 +13,12 @@ args="-h -? --help" quiet=0 unreadable= -while getopts ":Aa:qxX" opt; do +re= +while getopts ":Aa:g:qxX" opt; do case $opt in A) args="";; a) args="$OPTARG";; + g) re="$OPTARG";; q) quiet=1;; x) unreadable=0;; X) unreadable=1;; @@ -28,12 +31,15 @@ if [ -z "$prog" ]; then echo >&2 "Usage: find_working [options] " echo >&2 "Options: -A Don't test arguments to executable files." echo >&2 " -a Use arguments to test executable files. Default --help." + echo >&2 " -g Search string in output. Default ." echo >&2 " -q Don't print path to prog. Just exit 0 if found." echo >&2 " -x Don't try to execute unreadable files. Assume success." echo >&2 " -X Don't try to execute unreadable files. Assume failure." exit 1 fi +[ -z "$re" ] && re="\\b$prog\\b" + # Default args contain -? which might be interpreted as a glob. set -o noglob @@ -43,14 +49,14 @@ for path in ${PATH//:/ }; do if [ -r "$path/$prog" ]; then if [ -n "$args" ]; then - "$path/$prog" $args 2>&1 | grep "\\b$prog\\b" >/dev/null || continue + "$path/$prog" $args 2>&1 | grep "$re" >/dev/null || continue else ldd "$path/$prog" 2>/dev/null | grep "not found" >/dev/null && continue fi ret="$path/$prog" break elif [ -z "$unreadable" ]; then - "$path/$prog" $args 2>&1 | grep "\\b$prog\\b" >/dev/null || continue + "$path/$prog" $args 2>&1 | grep "$re" >/dev/null || continue ret="$path/$prog" break elif [ $unreadable = 0 ]; then