Avatar billede haspalm Nybegynder
01. juli 2003 - 12:15 Der er 11 kommentarer og
1 løsning

EXIT status fra system()

Hejsa alle,
jeg har følgende problemstilling:
Har lavet et script som skal køre på en windowsserver - med bl.a. nedenstående linje:

system("cvs commit -l -m \"blobID 222222:\" -f  \"%CD%\\in\\$project\\$placepath\\$pushfilename\"");

jeg skal bruge exit værdien fra cvs committet - men får værdien fra system-kaldet.. altså 0 uanset om committet går godt eller ej.

Er der nogen der har et godt råd ?

På forhånd tak
Haspalm
Avatar billede erikjacobsen Ekspert
01. juli 2003 - 12:24 #1
Jeg tror exec(...) virker bedre for dig - men på en windows maskine ?? Måske.
Avatar billede acoon Nybegynder
01. juli 2003 - 12:24 #2
Det vil sige at hvis du sætter $result = system("blablabla")
så er $result altid lig 0 ?
Avatar billede acoon Nybegynder
01. juli 2003 - 12:25 #3
Du kan evt gøre følgende..

$result = `cvs commit -l -m \"blobID 222222:\" -f \"%CD%\\in\\$project\\$placepath\\$pushfilename\"`;
print $result;
Avatar billede thomasledet Nybegynder
01. juli 2003 - 12:28 #4
til den slags plejer jeg at bruge Expect-modulet... det er som lavet til den slags...
Avatar billede thomasledet Nybegynder
01. juli 2003 - 12:30 #5
erikjacobsen > exec vil ikke hjælpe meget, hvis han vil have noget resultat igen... det giver meget lidt mening...

fra perldoc -f exec
              The "exec" function executes a system command and never
              returns-- use "system" instead of "exec" if you want it to
              return.  It fails and returns false only if the command does
              not exist and it is executed directly instead of via your sys-
              tem's command shell (see below).

              Since it's a common mistake to use "exec" instead of "system",
              Perl warns you if there is a following statement which isn't
              "die", "warn", or "exit" (if "-w" is set  -  but you always do
              that).  If you really want to follow an "exec" with some other
              statement, you can use one of these styles to avoid the warn-
              ing:
Avatar billede haspalm Nybegynder
01. juli 2003 - 12:47 #6
Thomasledet > Vil du kunne guide mig til en løsning med dette Expect-module ?
Avatar billede erikjacobsen Ekspert
01. juli 2003 - 12:50 #7
Du har ret Thomas - jeg huskede noget fra et andet sprog.
Avatar billede thomasledet Nybegynder
01. juli 2003 - 12:57 #8
haspalm> nu skriver du godtnok, at det er på windows... nu skal jeg ærligt indrømme, at jeg ikke har brugt windows de sidste mange år, men det er vel et forsøg værd...

mere eller mindre fra perldoc Expect

#!/usr/bin/perl

use Expect;

my $command = 'cvs';
my @parameters = (dine parametre);

# create an Expect object by spawning another process
my $exp = Expect->spawn($command, @params)
  or die "Cannot spawn $command: $!\n";

if ($exp->expect(10,'-re',"Committed successfully")) {
    $exp->hard_close();
    print "Ah pis...\";
} else {
    $exp->soft_close();
    print "Jaaaa!\n";
}

eller noget i den retning...
Avatar billede haspalm Nybegynder
01. juli 2003 - 13:05 #9
ok - har været ud for at lede efter det modul.. kan ikke hitte den nogensteder andet end hvis de er i rpm eller hrm format hvilket min winzipper bestemt ikke er glad for ..
Avatar billede thomasledet Nybegynder
01. juli 2003 - 13:18 #10
perl -MCPAN -e "install Expect"

eller noget i den retning... forudsætter naturligvis, at du har CPAN installeret...
Avatar billede haspalm Nybegynder
01. juli 2003 - 13:19 #11
Har jeg selvfølgelig ikke...
Avatar billede thomasledet Nybegynder
01. juli 2003 - 13:24 #12
til windows (under forudsætning af, at du bruger ActivePerl) skal du bruge PPM

http://aspn.activestate.com/ASPN/Downloads/ActivePerl/

Der findes tilsyneladende tonsvis af pakker også til ActivePerl... også Expect
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester