Je travaille sur un script et j'ai besoin de construire la tarcommande dynamiquement.
Voici deux exemples pour illustrer ce que j'essaie de faire:
#!/bin/bash
TAR_ME="/tmp"
EXCLUDE=("/tmp/hello hello" "/tmp/systemd*" "/tmp/Temp*")
_tar="tar "`printf -- '--exclude="%s" ' "${EXCLUDE[@]}"`" -zcf tmp.tar.gz"
echo COMMAND: "${_tar}"
${_tar} "$TAR_ME"
echo -e "\n\nNEXT:\n\n"
EXCLUDE=("--exclude=/tmp/hello\ hello" "--exclude=/tmp/systemd*" "--exclude=/tmp/Temp*")
_tar="tar "`printf -- '%s ' "${EXCLUDE[@]}"`" -zcf test.tar.gz"
echo COMMAND: "${_tar}"
${_tar} "$TAR_ME"
Je veux pouvoir utiliser _tarune commande, j'ai pu le faire fonctionner avec un chemin classique, mais j'en ai besoin pour travailler avec des espaces dans le nom des dossiers. Et chaque fois que j'ai des erreurs qui ressemblent à:
COMMAND: tar --exclude="/tmp/hello hello" --exclude="/tmp/systemd*" --exclude="/tmp/Temp*" -zcf tmp.tar.gz /tmp
tar: hello": Cannot stat: No such file or directory
COMMAND: tar --exclude=/tmp/hello\ hello --exclude=/tmp/systemd* --exclude=/tmp/Temp* -zcf test.tar.gz
tar: hello: Cannot stat: No such file or directory
Juste une chose que vous devez savoir, j'ai besoin que mon script fonctionne sur de très vieilles machines, ce qui signifie que je ne peux pas utiliser les dernières fonctionnalités de bash.
evaldevant l'exécution?