Subj : Shell script issue; rsync error wtf
To   : All
From : Khelair
Date : Sat Jun 13 2015 12:06 am

  I'm working with the following shell script for automating a task that I need
to accomplish for one of my clients...  Unfortunately the version that I've
written is having some really weird bugs creeping up when it's executed as a
shell script.  It's proving pretty problematic to debug, as when I throw the
script into debugging mode and cut 'n paste the actual command that it's trying
to execute into the shell, it works just fine.  When it's trying to execute via
the script I get the following error:

-=-=-=-=-
../sync_static_to_dev.sh
Rsyncing /server/assets with options: -vHrltD -e \'ssh -p 22\'
dgetsman@10.183.1.251:/server/assets /server/assets
Unexpected remote arg: dgetsman@10.183.1.251:/server/assets
rsync error: syntax or usage error (code 1) at main.c(1201) [sender=3.0.6]
Done
-=-=-=-=-

  I thought at first that perhaps there was an issue with the way that I had
used the quoting within the shell.  I've had other weird, esoteric kinds of
errors due to quoting incorrectly via shell script previously.  So I went back
through the script that follows and ended up escaping all occurrances of the
single-tick (') quoting, but still ended up getting the same error.
  So anyway, if there are any shell script wizards in the house, any you've got
any ideas on why this is failing as a script, but working when I cut 'n paste
the debugging output of the command straight into the shell, I'd greatly
appreciate any feedback you might be able to offer.
  Script follows:

-=-=-=-=-
#!/bin/sh

# script's functionality is to rsync static assets from whatever directory
# (specified in constants) from production to whatever directory specified on
# command line with an optional default (later, meh, nunathismattahs)

WHICH='/usr/bin/which'

STATIC_ASSETS='/server/assets'
SOURCE='10.183.1.251'       #use the quick link; this'll break quick

DEBUGGING=0
VERBOSE=1

WHOAMI=`$WHICH whoami`
RSYNC=`$WHICH rsync`

if [ -n "$1" ] ; then
    USER=$1
else
    USER=`$WHOAMI`
fi

if [ $VERBOSE -gt 0 ] ; then
  RSYNC_OPTS="-vHrltD -e 'ssh -p 22' $USER@$SOURCE:$STATIC_ASSETS \
    $STATIC_ASSETS"
else
  RSYNC_OPTS="-HrltD -e 'ssh -p 22' $USER@$SOURCE:$STATIC_ASSETS \
    $STATIC_ASSETS"
fi

if [ $DEBUGGING -eq 0 ] ; then
    if [ $VERBOSE -gt 0 ] ; then
        #RSYNC_OPTS="-vHrltD -e 'ssh -p 22' $USER@$SOURCE:$STATIC_ASSETS \
        #    $STATIC_ASSETS"

        echo Rsyncing $STATIC_ASSETS with options: $RSYNC_OPTS
        $RSYNC $RSYNC_OPTS
        echo Done
    else
        #RSYNC_OPTS="-HrltD -e 'ssh -p 22' $USER@$SOURCE:$STATIC_ASSETS \
        #    $STATIC_ASSETS"

        $RSYNC $RSYNC_OPTS
    fi
else
    echo $RSYNC $RSYNC_OPTS
fi

-=-=-=-=-

  Anything you might be able to offer is greatly appreciated!  TIA

  -D/K

---
Borg Burgers:  We do it our way; your way is irrelevant.