je le script shell suivant:paramètres d'un fichier Obtenir via le script shell en script python dans le format
#! /bin/sh
while read page_section
page=${page_section%%\ *}
section=${page_section#* } #NOTE: `%* }` is NOT a comment
wget --quiet --no-proxy www.cs.sun.ac.za/hons/$page -O html.tmp & wait
# echo ${page_section%%\ *} # verify correct string chopping
# echo ${page_section#* } # verify correct string chopping
./DokuWikiHtml2Latex.py html.tmp $section & wait
done < inputfile
et un fichier d'entrée comme celui-ci:
doku.php?id=ndewet:tools:tramonitor TraMonitor
doku.php?id=ndewet:description Implementation -1
doku.php?id=ndewet:description Research\ Areas -1
Le script télécharge un nombre de pages Web spesified dans inputfile
et doit ensuite passer le reste de la ligne (par exemple "Implementation -1" ou "Research \ Areas -1") au script python.
Maintenant pour le bit collant. Lorsque la troisième ligne de ce fichier exemple est traité passe « Recherche \ zones » au script python comme deux arguments distincts, comme le confirme:
>>> print sys.argv
['./DokuWikiHtml2Latex.py', 'html.tmp', 'Research', 'Areas', '-1']
Comment puis-je obtenir une section de mots multiples, comme « Domaines de recherche "du fichier d'entrée dans un seul argument pour le script python? J'ai essayé d'échapper le '\', et aussi faire
./DokuWikiHtml2Latex.py html.tmp `echo ${section#* }`
entre autres choses, mais en vain.
Le numéro à la fin d'une ligne d'entrée est un autre argument, mais facultatif.
Vous devez mettre des guillemets autour des éléments du tableau que vous unset à protéger contre la globalisation de fichier: champs "unset" [0] "' (dans le cas où il y a un fichier nommé "fields0"). Démonstration: 'test = (1 2 3); toucher test0; test non mis à jour [0]; déclarer -p test; "test" [0] "désactivé"; déclarer -p test' –
@Dennis Williamson: Merci. – Philipp
De rien. J'ai oublié de démontrer qu'une variable nommée 'test0', si elle existait, ne serait pas mise à jour à cause de la globalisation et de la présence du fichier:' test = (1 2 3); test0 = 4; toucher test0; test non mis à jour [0]; echo "test0 = $ test0"; déclarer -p test; "test" [0] "désactivé"; déclarer -p test' –