rsync e substituição do comando bash

1

Tentando obter um script para usar adequadamente as variáveis. (Os exemplos abaixo estão na linha de comando, mas vejo exatamente o mesmo comportamento quando dentro de um script #!/bin/bash .

$ FLAGS='--rsh="ssh -2"'
$ rsync $FLAGS foo bar
rsync: -2": unknown option
rsync error: syntax or usage error (code 1) at main.c(1084)

Então eu adiciono aspas.

$ rsync "$FLAGS" foo bar

E agora funciona corretamente. OK. Agora vamos adicionar mais alguns sinalizadores à variável $FLAGS . (Eu tentei com apenas "-r" e apenas "-p", a mesma coisa acontece, então eu não acho que esteja relacionado às bandeiras de um hífen que estou passando.)

$ FLAGS='-rptvlCR --rsh="ssh -2"'
$ rsync $FLAGS foo bar
rsync: -2": unknown option
rsync error: syntax or usage error (code 1) at main.c(1084)
$ rsync "$FLAGS" foo bar
rsync: -rptvlCR --rsh="ssh -2": unknown option
rsync error: syntax or usage error (code 1) at main.c(1084)
$ 

Observe que no segundo caso está tratando o argumento inteiro como uma única opção para o rsync.

O comando básico (digitado manualmente sem usar a variável $FLAGS ) funciona corretamente.

Alguma idéia?

Alguma ideia? Eu li todos os docs de scripts do bash que eu posso encontrar, e não consigo descobrir por que o rsync está ignorando as aspas duplas algumas vezes e tratando -2" como um único token.

    
por dirtside 27.01.2012 / 01:11

1 resposta

1

Jogue-os em uma matriz:

FLAGS=( '-rptvlCR' '--rsh="ssh -2"' )
rsync "${FLAGS[@]}"

Veja este FAQ do Bash para mais detalhes

    
por 27.01.2012 / 01:15

Tags