• Shell script issue; rsync error wtf

    From Khelair@TINFOIL to All on Sat Jun 13 00:06:06 2015
    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.
    ■ Synchronet ■ Tinfoil Tetrahedron BBS telnet://tinfoil.synchro.net