Jogue-os em uma matriz:
FLAGS=( '-rptvlCR' '--rsh="ssh -2"' )
rsync "${FLAGS[@]}"
Veja este FAQ do Bash para mais detalhes
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.
Jogue-os em uma matriz:
FLAGS=( '-rptvlCR' '--rsh="ssh -2"' )
rsync "${FLAGS[@]}"
Veja este FAQ do Bash para mais detalhes