On 2014-06-13 23:53, Pat Riehecky wrote: <snip> > +# setup args in the right order for making getopt evaluation > +# nice and easy. You'll need to read the manpages for more info > +# or review getopt-parse.bash under /usr/share/doc from which much was borrowed > +args=$(getopt -o hrcq -- "$@") > +if [[ $? -ne 0 ]]; then > + usage > +fi > +eval set -- "$args" > + > +RHELTAG=0 > +QUIET=0 > +WITHCOMMITHASH=0 > +for arg in "$@"; do This should be a while loop. `shift` alters the script's parameter list, not the list looped over by `for`. (The getopt-parse.bash example should probably have emphasised that as well as the need for quoting...) Potential problem cases with this structure as it stands right now: $0 -r -b c7 ... # BRANCH=-b (I think) $0 -b -b c7 # will probably trip unset variable error In other words, do `while true`, shift the appropriate amount in each case, and make sure to break / exit where appropriate (including a catch-all should-not-happen case, as in the sample). > + case $1 in > + -- ) > + # end of getopt args, shift off the -- and get out of the loop > + shift > + break 2 Not that it's likely to matter, but you only have one loop to break out of here. > + ;; > + -r ) > + # skip any package with 'centos' in the dist area > + RHELTAG=1 > + ;; > + -c ) > + # return with the commit hash as a prefix of the resulting srpm > + WITHCOMMITHASH=1 > + ;; > + -q ) > + # suppress warnings > + QUIET=1 > + ;; > + -b ) > + # Check this particular branch > + BRANCH=$2 > + shift > + shift > + ;; > + -h ) > + # get help > + usage > + ;; > + esac > +done > + <snip> > + > +if [[ "x${BRANCH}" != 'x' ]]; then > + echo "Someone with git-foo, a little help?" > + exit 1 See Mike's additions to get_sources [1] for a way to find branches containing HEAD and/or the current branch. > +else > + loglist=$(git log --pretty="%H|%s" | filter) > +fi [1] https://git.centos.org/blobdiff/centos-git-common.git/c61c1ca/get_sources.sh lines 62 to 86