The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Ringe en perl skript fra et perl script new2ss Shell programmering og Skripting 6 05-24-2009 06:03
Ã¥ drepe en prosess i perl gurukottur Shell programmering og Skripting 2 11-20-2006 04:01
Mitt "brød og smør" Process Keep Alive Perl Script .... Neo Tips og Tutorials 0 01-08-2005 05:17
PERL: vente til prosessen er fullført dangral Shell programmering og Skripting 2 04-21-2004 04:37
Drepte en prosess fra Perl-skript. sharuvman Shell programmering og Skripting 3 04-01-2004 01:10

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øk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 12-07-2005
vino's Avatar
Vino vino is offline Forum Staff  
Tilhenger (i Vino Veritas)
  
 

Bli Date: Feb 2005
Beliggenhet: Bangalore, India
Innlegg: 2798
Perl: Kjør perl skript i den aktuelle prosessen

Jeg har et spørsmål om å kjøre perl i den gjeldende prosessen.

Jeg skal vise et eksempel.

Se 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å invoking . / test.sh spawns en sub-shell og kjører skriptet. Mens . . / test.sh vil kjøre skript i den nåværende skall.

Nå, hvordan kan jeg simulere sistnevnte problemet med en perl skriptet. Jeg prøvde 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 det noen annen måte å kjøre script for å sikre at endringer gjort av skriptet påvirker gjeldende prosessen?

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

Bli Date: Feb 2004
Beliggenhet: NM
Innlegg: 5800
AFAIK perl oppretter et barn.

Er det en grunn til at du ikke kan lese den andre skriptblokker og gjør det den gjør i forbindelse med den nåværende prosessen? ie. finne chdir og gjør hva den gjør i perl script?
  #3 (permalink)  
Old 12-07-2005
vino's Avatar
Vino vino is offline Forum Staff  
Tilhenger (i Vino Veritas)
  
 

Bli Date: Feb 2005
Beliggenhet: Bangalore, India
Innlegg: 2798
Sitat:
Originally Posted by Jim McNamara
Er det en grunn til at du ikke kan lese den andre skriptblokker og gjør det den gjør i forbindelse med den nåværende prosessen?
Ja, det kan gjøres på den måten. Som ville fungere.

Jeg er nysgjerrig på om det kan gjøres på denne måten.

Takk,
Vino
  #4 (permalink)  
Old 12-07-2005
grasper grasper is offline
Registrert bruker
  
 

Bli Dato: Sep 2005
Innlegg: 45
Bare en gjetning, men jeg tror det. kommandoen instruksjoner gjeldende shell å tolke skriften - som det ikke fordi den har perl kommandoer / funksjoner i den.
  #5 (permalink)  
Old 12-07-2005
cbkihong cbkihong is offline Forum Advisor  
RÃ¥dgiver
  
 

Bli Dato: Sep 2002
Sted: Hong Kong, Kina
Innlegg: 1624
The "exec" builtin i bash (sh på Linux synes å være for) vil kjøre perl prosessen uten å opprette en ny prosess ved å erstatte den opprinnelige shell prosess, akkurat som C exec * familie av funksjoner.

Så du bør være i stand til å kjøre et skript ved ". / Script.sh" å opprette en ny prosess og deretter "exec perl script.pl for å fortsette kjøringen uten å innføre en ny prosess, men den opprinnelige shell script opphører (kontrollen vil ikke gå tilbake til shell script).

Sist endret av cbkihong; 12-07-2005 på 08:52..
  #6 (permalink)  
Old 12-07-2005
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registrert Geek
  
 

Bli Dato: desember 2003
Sted: Melbourne, Australia
Innlegg: 2100
Sitat:
Originally Posted by cbkihong
The "exec" builtin i bash (sh på Linux synes å være for ).....
PÃ¥ de fleste (senere) Linux distros sh er myk / hard 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  
Tilhenger (i Vino Veritas)
  
 

Bli Date: Feb 2005
Beliggenhet: Bangalore, India
Innlegg: 2798
Sitat:
Originally Posted by cbkihong
The "exec" builtin i bash (sh på Linux synes å være for) vil kjøre perl prosessen uten å opprette en ny prosess ved å erstatte den opprinnelige shell prosess, akkurat som C exec * familie av funksjoner.

Så du bør være i stand til å kjøre et skript ved ". / Script.sh" å opprette en ny prosess og deretter "exec perl script.pl for å fortsette kjøringen uten å innføre en ny prosess, men den opprinnelige shell script opphører (kontrollen vil ikke gå tilbake til shell script).
Hmm ... okie. SÃ¥ jeg brukte exec. Dette er hva jeg har.


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 gjorde en . . / test.sh og min xterm vindu bare forsvant.

Jeg endret test.pl å inneholde


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

og test.sh til

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

Den pwd fortsatt viser / tmp.

Vino
Closed Thread

Hugseliste

Tags
linux

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er PÃ¥
Smilefjes er PÃ¥
[IMG] koden PÃ¥
HTML-koden Av
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle klokkeslett er GMT -4. NÃ¥ er klokken 02:03.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0