The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Aufruf eines Perl-Skript von einem Perl-Skript new2ss Shell Programmierung und Scripting 6 05-24-2009 06:03 PM
To Kill a Prozess in perl gurukottur Shell Programmierung und Scripting 2 11-20-2006 04:01 AM
Meine "Brot und Butter"-Prozess Keep Alive Perl Script .... Neo Tipps und Tutorials 0 01-08-2005 05:17 AM
PERL: Warten Sie, bis zur vollständigen dangral Shell Programmierung und Scripting 2 04-21-2004 04:37 PM
Killing einen Prozess aus Perl-Skript. sharuvman Shell Programmierung und Scripting 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 12-07-2005
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Ort: Bangalore, Indien
Posts: 2798
Perl: Führen Sie ein Perl-Script, in den laufenden Prozess

Ich habe eine Frage in Bezug auf laufende perl in den laufenden Prozess.

Ich werde zeigen, mit einem Beispiel an.

Sehen Sie sich diese.


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$

So Berufung . / test.sh Spawns eine Unterkategorie Shell und startet das Skript. In der Erwägung, dass . . / test.sh wird das Skript in der aktuellen Shell.

Nun, wie kann ich simulieren diese Verhalten mit einem perl Skript. Ich habe versucht die folgenden aber nicht helfen.


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$

Gibt es eine andere Art und Weise der Ausführung des Skripts, um sicherzustellen, dass die Änderungen durch das Skript wird auf den laufenden Prozess?

Danke,
Vino
  #2 (permalink)  
Old 12-07-2005
Jim McNamara jim mcnamara is online now Forum Staff  
...@...
  
 

Join Date: Feb 2004
Ort: NM
Posts: 5787
AFAIK perl immer ein Kind.

Gibt es einen Grund, sie nicht lesen können, die anderen Skript und tun, was sie im Rahmen des laufenden Prozesses? dh., die chdir und dann tun, was sie in Ihrem perl Skript?
  #3 (permalink)  
Old 12-07-2005
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Ort: Bangalore, Indien
Posts: 2798
Zitat:
Zitat von Jim McNamara
Gibt es einen Grund, sie nicht lesen können, die anderen Skript und tun, was sie im Rahmen des laufenden Prozesses?
Ja, es kann getan werden, dass die Art und Weise. Das würde funktionieren.

Ich bin gespannt zu erfahren, ob es getan werden kann, diese Art und Weise.

Danke,
vino
  #4 (permalink)  
Old 12-07-2005
grasper grasper is offline
Registrierte Nutzer
  
 

Join Date: Sep 2005
Beiträge: 45
Nur eine Vermutung, aber ich denke, die. Befehl weist die aktuelle Shell-Skript zu interpretieren - was er nicht kann, weil er perl Befehle / Funktionen in sie.
  #5 (permalink)  
Old 12-07-2005
cbkihong cbkihong is offline Forum Advisor  
Advisor
  
 

Join Date: Sep 2002
Ort: Hong Kong, China
Beiträge: 1624
Die "exec" builtin in bash (sh auf Linux zu sein scheint zu) wird die perl Prozess, ohne einen neuen Prozess, indem sie anstelle der ursprünglichen Shell-Prozess, wie der C-exec * Familie von Funktionen.

Sie sollten in der Lage, ein Skript von ". / Script.sh", um einen neuen Prozess und dann auf "exec perl script.pl ", um fortzufahren Ausführung ohne die Einführung eines neuen Prozesses, sondern die ursprüngliche Shell-Skript wird beendet (Kontrolle wird es nicht erneut zu dem Shell-Skript).

Zuletzt bearbeitet von cbkihong; am 12-07-2005 08:52 PM..
  #6 (permalink)  
Old 12-07-2005
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registriert Geek
  
 

Join Date: Dezember 2003
Ort: Melbourne, Australien
Beiträge: 2.100
Zitat:
Zitat von cbkihong
Die "exec" builtin in bash (sh auf Linux zu sein scheint zu ).....
Auf den meisten (neueren) Linux-Distributionen sh ist weich / hart mit 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
Ort: Bangalore, Indien
Posts: 2798
Zitat:
Zitat von cbkihong
Die "exec" builtin in bash (sh auf Linux zu sein scheint zu) wird die perl Prozess, ohne einen neuen Prozess, indem sie anstelle der ursprünglichen Shell-Prozess, wie der C-exec * Familie von Funktionen.

Sie sollten in der Lage, ein Skript von ". / Script.sh", um einen neuen Prozess und dann auf "exec perl script.pl ", um fortzufahren Ausführung ohne die Einführung eines neuen Prozesses, sondern die ursprüngliche Shell-Skript wird beendet (Kontrolle wird es nicht erneut zu dem Shell-Skript).
Hmm ... Okie. So habe ich exec. Das ist es, was ich habe.


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$

Ich habe . . / test.sh und meine xterm Fenster einfach verschwunden.

Ich habe test.pl enthalten


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

und test.sh zu

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

Die pwd zeigt noch / tmp.

vino
Closed Thread

Lesezeichen

Tags
Linux

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 11:53 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0