Estou tentando executar a rsync
partir de um script Bourne shell (leia-se: extensões Bash não disponíveis) e depois de muita pesquisa, combinações de aspas simples/duplas, escapes, etc, não consegui passar corretamente o --out-format='%n'
argumento.
Por exemplo, este script:
#!/bin/sh
(set -x ; $(rsync -auh --delete --out-format='%n' "$1" "$2")) || exit 1
quando invocado como ./myscript.sh dir1/ dir2/
retorna esta saída no MacOS 10.12.6:
++ rsync -auh --delete --out-format=%n dir1/ dir2/
+ ./ file1.c file1.h file2.c file2.h
myscript.sh: line 3: ./: is a directory
onde file1.c
file1.h
file2.c
e file2.h
são o conteúdo dedir1/
Em primeiro lugar, não tenho ideia de por que a + ./ file1.c file1.h file2.c file2.h
linha é saída, porque --out-format='%n'
gera um arquivo por linha e nem todos os arquivos na mesma linha. Além disso, o início misterioso ./
parece ser a causa (ou a consequência) do erro.
Se eu remover --out-format='%n'
do script, ele roda bem, sem erros.
Se eu executar o comando a partir do terminal, ele roda bem tanto com aspas simples no argumento quanto sem elas ( --out-format='%n'
e --out-format=%n
). Quando no script, ele falha da mesma forma em ambos os casos.
O que pode estar causando esse erro?