2011-02-27 3 views
0

J'ai un script bash qui définit un tableau de globs de fichiers contenant * caractères génériques.Echappement des caractères génériques Bash lors de l'exécution du script Python à partir du script bash?

Le script exécute un script python en passant en paramètre chacun de ces globs.

Sur la ligne de commande, je peux citer tout glob, et python est content.

Dans le script bash, si je cite les globs, le chemin os.path.real de python semble se confondre avec les guillemets - qui sont passés dans le script lui-même.

par exemple. script bash:

BACKUP_PATHS=("/root/backups/db-dump-*" "/root/backups/*_backup.tar.bz2") 
for path in "${BACKUP_PATHS[@]}" 
do 
    /usr/local/bin/python2.7 /usr/local/bin/clean.py \'$path\' $MAX_FILES 
done 

python:

os.path.realpath(path) # results in something like: /usr/local/bin'/root/backups/db-dump-*' 

Comment puis-je les faire jouer ensemble?

Merci

Répondre

2

Au lieu de \'$path\', utilisez "$path". Les guillemets permettent de substituer le contenu de la variable $path, mais d'empêcher l'expansion générique et de garantir que le chemin est passé en tant qu'argument unique.

+0

mercisssssssss – barry

Questions connexes