Bash cita expansão

1

Eu quero executar um comando em um script bash que tenha este estilo:

rdiff-backup --verbosity 5 -somearguments -somemorearguments \
    --remote-schema 'ssh -i $keyfile -C %s' \
    sourcedir backup::/targetdir

O problema aparece com o argumento --remote-schema . Eu tenho que fazer a variável ssh-key , neste exemplo com $keyfile .

Eu construo o comando resultante em $rdiffcmd . Eu não tenho um problema para construir um comando onde tudo parece que deve funcionar: Um echo $rdiffcmd mostra as cotações necessárias em torno de --remote-schema . Mas tem que haver uma expansão invisível porque eu sempre recebo a mensagem de que rdiff-backup (no lado local) não entende -i . Portanto, não está usando as aspas.

O que devo fazer para agrupar o esquema remoto e fazer com que pareça um argumento?

Muito estranho: posso colar e copiar a saída de echo $rdiffcmd em um terminal e funciona. Mas como $rdiffcmd no meu script, não com o problema acima.

    
por user2715068 17.03.2016 / 10:49

1 resposta

0

Se $keyfile contiver espaços e outros exemplos:

rdiff-backup --verbosity 5 -somearguments -somemorearguments \
    --remote-schema 'ssh -i "'"$keyfile"'" -C %s' \
    sourcedir backup::/targetdir
    
por 16.04.2018 / 03:40

Tags