Eu resolvi executar bash -c "$cmd"
Estou tentando executar um script shell (sh) para backups, usando o rdiff-backup. As linhas de interesse são:
cmd="${prog} -v5 --print-statistics --include-globbing-filelist ${inclist} \
--exclude ** ${src} ${dest}"
echo "${cmd}"
$cmd
Ele ecoa o comando correto para mim, mas engasga com o comando em si:
rdiff-backup -v5 --print-statistics --include-globbing-filelist /etc/backup/include-list --exclude ** / /backup/all
Using rdiff-backup version 1.2.8
Fatal Error: Switches missing or wrong number of arguments
See the rdiff-backup manual page for more information.
A execução direta do comando funciona (usando '**'
em vez de **
). Note que eu tentei usar '**'
na string de comando, mas ele foi expandido errado e dá um erro como
Fatal Error: Fatal Error: The file specification
''**'
cannot match any files in the base directory
'/'
...
Mas eu suponho que isso ainda é uma questão de expansão, então talvez isso esteja errado. Estou muito confuso no momento e gostaria de receber ajuda.
Eu resolvi executar bash -c "$cmd"