Invoking rsync from a script with null parameters

Kevin Korb kmk at
Mon Nov 5 09:48:15 MST 2012

Hash: SHA1

Well, I am thinking that this is actually expected behavior that I had
just never seen before.  Even cat and ls duplicate this behavior.

On 11/05/12 11:46, Joe wrote:
> Thanks for duplicating this.  Even though it's a very small issue,
> it would be good to fix it (make it an error) because this almost
> invisible scripting error can lead to very unpredictable results
> just depending on the current working directory which shouldn't
> have any impact at all unless it is explicitly referenced in the
> parameters.
> Your approach gets all the substitutions done before rsync gets to
> see it, so "sometimes a blank is really just a blank" ;)   . Joe
> On 11/05/2012 11:06 AM, Kevin Korb wrote:
>> Very interesting. It does appear to take '' or "" as if it were
>> "./" in fact it appears to tale " " or ' ' as "./ " which throws
>> an error.
>> I think the reason I haven't seen this before is that I always
>> built up a $RSYNC_PARAMS variable and passed that to rsync. That
>> variable always had some params in it just they weren't always
>> the same.
>> On 11/05/12 02:39, Joe wrote:
>>> No. I traced the heck out of it (bash -vx ...) and I was
>>> actually sending a null parameter as the first argument to
>>> rsync and that made it get out of bed on the wrong side.
>>> Here are some more details as to what happened:
>>> Essentially, rsync worked, but additionally processed all the 
>>> files in the current working directory when that wasn't
>>> expressly requested. Since null parameters are almost totally
>>> invisible, it took awhile to find.
>>> Sorry I didn't include more details in my original post.
>>> On the bright side, this is what caused me to join this list. 
>>> I've learned a lot - mostly by lurking.
>>> Thanks. Joe
>>> On 11/04/2012 10:35 PM, Kevin Korb wrote:
>>>> I suspect you are missing a space somewhere and are ending
>>>> up with 2 parameters stuck together. You can have bash output
>>>> the rsync command line it intends to run to make sure or you
>>>> can just use " " instead of "" as extra spaces between
>>>> parameters will have no effect.
>>>> On 11/04/12 22:23, Joe wrote:
>>>>> I'm working on a bash backup script using rsync. (kubuntu 
>>>>> precise 12.04, rsync 3.0.9-1ubuntu1)
>>>>> To avoid having a number of slightly different rsync
>>>>> commands, I would like to use shell variables as part of
>>>>> the rsync command. I.e.: DRYRUN="-n" rsync "${DRYRUN}" more
>>>>> parameters ...
>>>>> This does not work if DRYRUN="" - apparently because this 
>>>>> command becomes rsync "" more parameters ... instead of
>>>>> rsync more parameters ...
>>>>> and rsync uses the null parameter for something and does
>>>>> not perform as expected. It does not generate any error or 
>>>>> diagnostic message.
>>>>> Is there a way to get around this problem - other than
>>>>> coding each permutation of the command separately?
>>>>> I'm experimenting with putting the whole rsync command in
>>>>> a string so I can run it after any null parameters revert
>>>>> to pure white space. Once I get the quoting to work
>>>>> (preserving those quotes I still need), this method should
>>>>> work, but it's less than elegant.
>>>>> Is this a bug in rsync? (Shouldn't it at least
>>>>> complain/error exit if it gets something like this that it
>>>>> doesn't understand?) If it is, what's the best way to
>>>>> report it?
>>>>> Ideally (for me anyway), I would like it to completely
>>>>> ignore any null parameters, but I don't know what problems
>>>>> that might cause for other people.
>>>>> TIA
>>>>> Joe

- -- 
	Kevin Korb			Phone:    (407) 252-6853
	Systems Administrator		Internet:
	FutureQuest, Inc.		Kevin at  (work)
	Orlando, Florida		kmk at (personal)
	Web page:
	PGP public key available on web site.
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla -


More information about the rsync mailing list