The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Appel d'un script perl à partir d'un script perl new2ss De programmation et de script Shell 6 05-24-2009 06:03 PM
pour tuer un processus en perl gurukottur De programmation et de script Shell 2 11-20-2006 04:01 AM
Mon "Bread and Butter" Process Keep Alive Perl Script .... Neo Conseils et Didacticiels 0 01-08-2005 05:17 AM
PERL: attendre processus complet dangral De programmation et de script Shell 2 04-21-2004 04:37 PM
Tuer un processus de script perl. sharuvman De programmation et de script Shell 3 04-01-2004 01:10 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 12-07-2005
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Lieu: Bangalore, Inde
Posts: 2798
Perl: Exécuter script perl dans le processus actuel

J'ai une question concernant la marche perl dans le processus actuel.

Je vais démontrer par un exemple.

Regarde ça.


Code:
sh-2.05b$ pwd
/tmp
sh-2.05b$ cat test.sh
#! /bin/sh
cd /etc
sh-2.05b$ ./test.sh 
sh-2.05b$ pwd
/tmp
sh-2.05b$ . ./test.sh 
sh-2.05b$ pwd
/etc
sh-2.05b$

Ainsi, en invoquant . / test.sh engendre un sous-shell et exécute le script. Considérant que . . / test.sh exécutera le script dans le shell.

Maintenant, comment puis-je simuler le comportement de ce dernier avec un perl script. J'ai essayé le suivant mais il n'a pas d'aide.


Code:
sh-2.05b$ pwd
/tmp
sh-2.05b$ cat test.pl
#! /usr/bin/perl
chdir("/etc");
sh-2.05b$ ./test.pl 
sh-2.05b$ pwd
/tmp
sh-2.05b$ . ./test.pl 
sh: ./test.pl: line 2: syntax error near unexpected token `"/tmp"'
sh: ./test.pl: line 2: `chdir("/tmp");'
sh-2.05b$

Existe-t-il une autre manière de l'exécution du script pour faire en sorte que les modifications apportées par le script d'affecter le processus en cours?

Merci,
Vino
  #2 (permalink)  
Old 12-07-2005
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Lieu: NM
Posts: 5787
AFAIK perl crée toujours un enfant.

Existe-t-il une raison vous ne pouvez pas lire le script et d'autres faire ce qu'il fait dans le cadre du processus actuel? c'est-à-dire., trouver le chdir et ensuite faire ce qu'il fait dans votre perl script?
  #3 (permalink)  
Old 12-07-2005
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Lieu: Bangalore, Inde
Posts: 2798
Citation:
Posté par jim McNamara
Existe-t-il une raison vous ne pouvez pas lire le script et d'autres faire ce qu'il fait dans le cadre du processus actuel?
Oui, il peut être fait de cette façon. Cela travail.

Je suis curieux de savoir si cela peut se faire de cette façon.

Merci,
vino
  #4 (permalink)  
Old 12-07-2005
grasper grasper is offline
Registered User
  
 

Join Date: Sep 2005
Posts: 45
Juste une supposition, mais je pense que le. commande est l'instruction en cours shell d'interpréter le script - qui ne peut pas parce qu'il a perl commandes / fonctions dans celle-ci.
  #5 (permalink)  
Old 12-07-2005
cbkihong cbkihong is offline Forum Advisor  
Conseiller
  
 

Join Date: Sep 2002
Lieu: Hong Kong, Chine
Messages: 1624
Le "exec" builtin en bash (sh sur Linux semble être trop) court le perl processus, sans créer un nouveau processus en remplaçant l'original shell processus, tout comme le C exec famille de fonctions.

Alors vous devriez être en mesure d'exécuter un script par ". / Script.sh" pour créer un nouveau processus et ensuite "exec perl script.pl "pour poursuivre l'exécution, sans l'introduction d'un nouveau processus, mais le script se terminera (contrôle ne sera pas de retour au shell script).

Dernière édition par cbkihong; au 12.07.2005 08:52 PM..
  #6 (permalink)  
Old 12-07-2005
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Inscrits Geek
  
 

Join Date: Dec 2003
Lieu: Melbourne, Australie
Messages: 2100
Citation:
Posté par cbkihong
Le "exec" builtin en bash (sh sur Linux semble être trop ).....
Sur la plupart des (récents) distributions Linux sh est soft / hard lié à bash ...

Code:
# ls -l /bin/sh /bin/bash
-rwxr-xr-x  1 root root 616312 Dec  7  2004 /bin/bash
lrwxrwxrwx  1 root root      4 May 18  2005 /bin/sh -> bash

  #7 (permalink)  
Old 12-08-2005
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Lieu: Bangalore, Inde
Posts: 2798
Citation:
Posté par cbkihong
Le "exec" builtin en bash (sh sur Linux semble être trop) court le perl processus, sans créer un nouveau processus en remplaçant l'original shell processus, tout comme le C exec famille de fonctions.

Alors vous devriez être en mesure d'exécuter un script par ". / Script.sh" pour créer un nouveau processus et ensuite "exec perl script.pl "pour poursuivre l'exécution, sans l'introduction d'un nouveau processus, mais le script se terminera (contrôle ne sera pas de retour au shell script).
Hmm ... Okie. J'ai donc utilisé exec. C'est ce que j'ai reçu.


Code:
sh-2.05b$ pwd
/tmp
sh-2.05b$ cat test.sh
#! /bin/sh
exec perl /tmp/test.pl
sh-2.05b$ cat test.pl
chdir("/etc");
sh-2.05b$ ./test.sh
sh-2.05b$ pwd
/tmp
sh-2.05b$

J'ai fait un . . / test.sh et de ma fenêtre xterm simplement disparu.

J'ai changé de contenir test.pl


Code:
#! usr/bin/perl
chdir("/etc");

et à test.sh

Code:
#! /bin/sh
exec /tmp/test.pl

Le reste pwd / tmp.

vino
Closed Thread

Bookmarks

Tags
linux

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 04:10 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0