passage de parametres depuis un script unix

Le
Michel Petitjean
Bonjour.

J'ai un source python test.py qui lit 3 parametres (chaines de
caracteres) au clavier avec raw.input
Exemple: chaine = raw_input("Chaine ?")
Je souhaite executer le source python a partir d'un script sous shell
sans avoir a entrer les donnees au clavier (les parametres sont
declares dans le script shell).
J'ai essaye de passer les parametres comm pour un binaire, exemple:

pwd
echo "fichier d entree : " $1
echo "fichier de sortie: " $2
echo "chaine " $3

cat << eof | python test.py
$1
$2
$3
eof

Mais ca ne marche pas: je dois quand meme entrer les donnees au
clavier.
Quelle est la syntaxe a utiliser ?

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Francois Lafont
Le #23300201
Bonjour,

En fait ce problème n'est pas du tout un problème Python mais un
problème de shell Unix uniquement, ce n'est donc pas vraiment le bon
groupe de discussion.

Ceci étant je m'étais déjà posé la même question et je pense que ceci
devrait y répondre. Mettre dans le script qui appelle le script python
la ligne :

echo $'PARAM1nPARAM2nPARAM3n' | python script.py

Peut-être qu'il y a mieux à faire mais je ne vois pas.


--
François Lafont
Francois Lafont
Le #23300191
Le 21/04/2011 13:20, Francois Lafont a écrit :

echo $'PARAM1nPARAM2nPARAM3n' | python script.py



Je me demande si cette façon de faire n'est pas valable que pour le
shell Bash. On peut faire aussi comme dans la ligne ci-dessous qui est
peut-être plus portable d'un shell à un autre :

(echo "PARAM1"; echo "PARAM2"; echo "PARAM3") | python script.py


--
François Lafont
Michel Petitjean
Le #23300821
La solution 2 marche sous tcsh:
( echo $1 ; echo $2 ; echo $3 ) | python test.py
C'etait un probleme de shell.
Merci !

On 21 avr, 13:28, Francois Lafont wrote:
Le 21/04/2011 13:20, Francois Lafont a crit :

> echo $'PARAM1nPARAM2nPARAM3n' | python script.py

Je me demande si cette fa on de faire n'est pas valable que pour le
shell Bash. On peut faire aussi comme dans la ligne ci-dessous qui est
peut- tre plus portable d'un shell un autre :

(echo "PARAM1"; echo "PARAM2"; echo "PARAM3") | python script.py

--
Fran ois Lafont
Publicité
Poster une réponse
Anonyme