Erro ao executar o comando bash armazenado em string

0

Escrevi um script de shell bash que usa rsync para implantar arquivos no servidor da Web ao vivo.

Logo antes de executar, o script exibe o comando completo gerado pelo script do shell:

rsync --chmod="ug=rwx" -e="ssh" --filter="merge .deploy/filters" --dry-run --recursive -v --size-only "/var/www/vhosts/staging/mysite.com/httpdocs/" "[email protected]:/var/www/vhosts/mysite.com/domains/mysite.com/httpdocs"

Isso está sendo executado dentro do meu script de shell da seguinte forma:

local command='getDeploymentCommand "$deploy_direction" "$mode"'
echo $command
echo '$command'

... e produz o seguinte erro:

rsync: Invalid argument passed to --chmod ("ug=rwx")

A sintaxe chmod parece correta para mim. O que é realmente estranho é que o comando real copiado e colado no shell e executado funciona bem. Por que isso e como posso fazer isso funcionar?

    
por XedinUnknown 01.11.2013 / 15:06

1 resposta

1

Olhando para a página man, as aspas não são necessárias e provavelmente estão fazendo algo não intencional no shell script, em vez de coladas na linha de comando. Tente remover as citações do seu comando.

O problema é que o shell permite a interpolação de variáveis entre aspas duplas. Se você usar aspas simples, ele não permitirá a interpolação ou você poderá evocar as aspas para evitar a interpolação.

    
por 01.11.2013 / 15:14