Eu estava tentando usar expansões de strings sem aspas para passar dois argumentos para tar; o primeiro é o sinalizador da linha de comando --exclude
e o segundo contém um *
caractere. Na tentativa de evitar globbing prematuro, tentei citar *
:
shopt -s nullglob
x="--exclude '*'"
echo tar $x
Para minha surpresa, '*'
desapareceu completamente! Aqui estava o resultado:
tar --exclude
Entendo que poderia mudar do shell POSIX para o Bash e usar arrays para evitar essa dor de cabeça. Mas ainda me pergunto: o que diabos estava acontecendo com aquele trecho de shell POSIX? Por que ele excluiu os globos citados? Eu esperava que isso deixasse a parte citada em paz ou percorresse todo o caminho e expandisse o globo. Não fez nada disso.