Alex Samad wrote:

> Hi, i have this:

> RDSCHM="--remote-schema 'ssh -i /root/.ssh/id_backup -C  %s rdiff-backup 
> --server'"

> and trying this
> 
> rdiff-backup \
> $RDSCHM \
> $RDRM \
> "$DEST/"

> with sh -x i get this
 
> + rdiff-backup --remote-schema ''\''ssh' -i /root/.ssh/id_backup -C %s 
> rdiff-backup '--server'\''' --remove-older-than '"10B"' --force 
> max::/backups/test/system/

I am pretty sure you are using bash as the sh link, do 'ls -la /bin/sh' to get: 
/bin/sh --> /bin/bash
If it were dash the responses would be different.

Testing: set up a "test" file with:
        #!/bin/sh
        RDSCHM="--remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'"
        echo $RDSCHM
        echo "$RDSCHM"
with: bash -x test, I get:
        + RDSCHM='--remote-schema '\''ssh -i /root/.ssh/id_backup -C %s 
rdiff-backup --server'\'''
        + echo --remote-schema ''\''ssh' -i /root/.ssh/id_backup 
$'-C\302\240%s' 'rdiff-backup --server'\'''
        --remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'
        + echo '--remote-schema '\''ssh -i /root/.ssh/id_backup -C %s 
rdiff-backup --server'\'''
        --remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'

with: dash -x test, I get:
        + RDSCHM=--remote-schema 'ssh -i /root/.ssh/id_backup -C %s 
rdiff-backup --server'
        + echo --remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'
        --remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'
        + echo --remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'
        --remote-schema 'ssh -i /root/.ssh/id_backup -C %s rdiff-backup 
--server'

with dash there is no «  ''\''ssh'  »

Also, did you notice the difference between a command on an unquoted variable 
and a quoted one?
        + echo --remote-schema ''\''ssh' -i /root/.ssh/id_backup 
$'-C\302\240%s' 'rdiff-backup --server'\'''
        + echo '--remote-schema '\''ssh -i /root/.ssh/id_backup -C %s 
rdiff-backup --server'\'''

Conclusion: Quoting the variable will solve your problem, as this:
        rdiff-backup \
          "$RDSCHM" \
          "$RDRM" \
          "$DEST/"


> the ''\''ssh' is the confusing bit it is seperate out the ssh and the -i.

Yes, on a bash shell, but only while quoting with -x, the actual command does 
the right thing.

> what can I do to prevent this.

Just put « $RDSCHM »  inside quotes as this: « "$RDSCHM" »

> My reading has lead me to IFS variable
> but I don't want to start playing with this yet ! I think I am just
> missing something. Hopefully the ml eyes will be able to see what i
> can't

No need to....

> oh and its using dash well sh

It does not really matter which shell it is, when the issue is about correct 
quoting of variables.

-- 
Antonio Perez


--
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to