The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Opkald til et perl-script fra et perl-script new2ss Shell Programmering og Scripting 6 05-24-2009 06:03 PM
at dræbe en proces i perl gurukottur Shell Programmering og Scripting 2 11-20-2006 04:01 AM
Min "brød og smør" Process Hold Alive Perl Script .... Neo Tips og Tutorials 0 01-08-2005 05:17 AM
PERL: vente på processen for at fuldføre dangral Shell Programmering og Scripting 2 04-21-2004 04:37 PM
Drab en proces fra perl script. sharuvman Shell Programmering og 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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 12-07-2005
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Beliggenhed: Bangalore, Indien
Indlæg: 2.798
Perl: Kør perl script i den igangværende proces

Jeg har et spørgsmål om at køre perl i den aktuelle proces.

Jeg vil vise med et eksempel.

Kig på dette.


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$

Så påberåber . / test.sh gydninger en sub-shell og kører scriptet. Ud fra følgende betragtninger: . . / test.sh vil køre scriptet i den nuværende skallen.

Nu, hvordan kan jeg simulere sidstnævnte problem med en perl script. Jeg prøvede det følgende, men det hjalp ikke.


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$

Er der nogen anden måde at køre script for at sikre, at de ændringer, som scriptet vil påvirke den igangværende proces?

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

Join Date: Feb 2004
Beliggenhed: NM
Posts: 5.794
AFAIK perl altid skaber et barn.

Er der en årsag til, at du ikke kan læse de andre script og gøre, hvad den gør i forbindelse med den igangværende proces? dvs. finde chdir og derefter gøre, hvad den gør i din 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
Beliggenhed: Bangalore, Indien
Indlæg: 2.798
Citat:
Oprindeligt Indsendt af jim McNamara
Er der en årsag til, at du ikke kan læse de andre script og gøre, hvad den gør i forbindelse med den igangværende proces?
Ja, det kan gøres på den måde. Det ville arbejde.

Jeg er nysgerrig efter at vide, hvis det kan gøres på denne måde.

Tak,
vino
  #4 (permalink)  
Old 12-07-2005
grasper grasper is offline
Registreret Bruger
  
 

Join Date: Sep 2005
Stillinger: 45
Bare et gæt, men jeg tror det. kommando er instruere den nuværende shell at fortolke script - som den ikke kan, fordi det har perl kommandoer / funktioner i det.
  #5 (permalink)  
Old 12-07-2005
cbkihong cbkihong is offline Forum Advisor  
Advisor
  
 

Join Date: Sep 2002
Beliggenhed: Hong Kong, Kina
Stillinger: 1624
Den "exec" builtin i bash (sh om Linux ser ud til at være alt for) vil køre perl processen uden at skabe en ny proces ved at erstatte den oprindelige shell-processen, ligesom C exec * familie af funktioner.

Så du burde være i stand til at køre et script med ". / Script.sh" for at oprette en ny proces og derefter "exec perl script.pl "for at fortsætte udførelsen uden at indføre en ny proces, men den oprindelige shell script vil opsige (kontrol vil ikke vende tilbage til shell script).

Sidst redigeret af cbkihong; 12-07-2005 på 08:52 PM..
  #6 (permalink)  
Old 12-07-2005
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registreret Geek
  
 

Join Date: Dec 2003
Location: Melbourne, Australien
Stillinger: 2100
Citat:
Oprindeligt Indsendt af cbkihong
Den "exec" builtin i bash (sh om Linux ser ud til at være for ).....
På de fleste (nyere) Linux distros sh er blødt / hårdt knyttet til 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
Beliggenhed: Bangalore, Indien
Indlæg: 2.798
Citat:
Oprindeligt Indsendt af cbkihong
Den "exec" builtin i bash (sh om Linux ser ud til at være alt for) vil køre perl processen uden at skabe en ny proces ved at erstatte den oprindelige shell-processen, ligesom C exec * familie af funktioner.

Så du burde være i stand til at køre et script med ". / Script.sh" for at oprette en ny proces og derefter "exec perl script.pl "for at fortsætte udførelsen uden at indføre en ny proces, men den oprindelige shell script vil opsige (kontrol vil ikke vende tilbage til shell script).
Hmm ... okie. SÃ¥ jeg brugte exec. Dette er, hvad jeg fik.


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$

Jeg har en . . / test.sh og min xterm vindue bare forsvundet.

Jeg har ændret test.pl til at indeholde


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

og test.sh til

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

Den pwd stadig viser / tmp.

vino
Closed Thread

Bogmærker

Tags
linux

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er PÃ¥
Smilies er PÃ¥
[IMG] koden er PÃ¥
HTML-koden er Slukket
Trackbacks er PÃ¥
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle tidspunkter er GMT -4. Den tid er nu 12:48 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0