From: Linus Torvalds Date: Mon, 12 Sep 2005 23:46:53 GMT Subject: Re: Improve "git grep" flags handling Message-ID: In-Reply-To: <7vslw96f6j.fsf@assigned-by-dhcp.cox.net> On Mon, 12 Sep 2005, Junio C Hamano wrote: > > Yeah, let's see how tolerant your barf-o-meter is today. I'm not barfing, but that's probably because my brain just shut down and is desperately trying to gouge my eyes out with a spoon. Wouldn't it be _much_ nicer to just do pattern= flags=() git_flags=() while : ; do case "$1" in --cached|--deleted|--others|--killed|\ --ignored|--exclude=*|\ --exclude-from=*|\--exclude-per-directory=*) git_flags=("${git_flags[@]}" "$1") ;; -e) pattern="$2" shift ;; -A|-B|-C|-D|-d|-f|-m) flags=("${flags[@]}" "$1" "$2") shift ;; --) shift break ;; -*) flags=("${flags[@]}" "$1") ;; *) if [ -z "$pattern" ]; then pattern="$1" shift fi break ;; esac shift done git-ls-files -z "${git_flags[@]}" | xargs -0 grep "${flags[@]}" "$pattern" which does use bash array variables, but dang, it does so for a reason: they really are very very useful, and they make it _so_ much more pleasant to do these things.. Linus