← Back to team overview

sslug-teknik team mailing list archive

RE: Erstatte en linie med en anden i script

 

Hej igen og tak for feedback,

Har forsøgt med at kalde perlscript direkte med '' omkring hele variablem med anførselstegn indeni og mellemrum og det virker. Kan bare ikke finde ud af at få bash scriptet til på passende måde at sætte '' omkring:
--------------------------------------
modified_algo2=\'$modified_algo\'
echo $modified_algo2

cat $5 |./substitute.pl $1 $2 $modified_algo2 >output.txt
--------------------------------------

$modified_algo2 har den rigtige værdi ('.L1TH 5 "apb" "C0805_BDY" 0 2 0 0 -15 20 0 0 0 0 0 0 0 0 0 0'). Hvis jeg kalder Perl scriptet direkte fra shellen, sætter den den korrekte værdi ind. Hvis jeg kalder perlscriptet fra Bash scriptet, kommer der til at stå:

'.L1TH og intet andet.

Nogen råd??

Best Regards/Med venlig hilsen
Torben Andersen

-----Original Message-----
From: soeren.koch@xxxxxxxx [mailto:soeren.koch@xxxxxxxx]
Sent: 15. august 2008 11:27
To: sslug-teknik@xxxxxxxx
Subject: RE: [TEKNIK] Erstatte en linie med en anden i script

Hmm det må være noget med at escape ordentligt (mit gæt er at der i bahs filen skal stå noget i stil med \\\" Altså 3 escapes efterfulgt af "
Du må prøve dig frem.
Jeg havde selv samme problem engang (om end det var et perlscript der skulle generere end html side indeholdende et javascript der skulle lave en popup html med et javascript til at lukke den når den mistede fokus, tror nok jeg endte med 8 escapes hver gang jeg skulle lave en " eller ' for at de 'overlevede' korrekt....)

Søren

> -----Original Message-----
> From: Torben Andersen [mailto:Torben.Andersen@xxxxxxxxxxxxxxxxxx]
> Sent: Friday, August 15, 2008 11:08 AM
> To: sslug-teknik@xxxxxxxx
> Subject: RE: [TEKNIK] Erstatte en linie med en anden i script
>
> Tak til alle for feedback. Er næsten i mål med:
>
> --------------------------------
> #!/usr/local/bin/perl
> $algo_level = @ARGV[0];
> $algo = @ARGV[1];
> $new = @ARGV[2];
> #print "$new\n";
> while (<STDIN>)
> {
> 	unless
> (/$algo_level\s+\d+\s+\"\w+\"\s+\"$algo\"/)
> 	{
> 		print $_;
>     	    	next;
> 	}
> 	###
> 	print "$new\n";
> 	###
> }
> ---------------------------------
>
> Problemet for mig, er at erstatningsstrengen (argument 3) er af typen:
> .L1TH 5 "apb" "C0805_BDY" 0 2 0 0 -15 20 0 0 0 0 0 0 0 0 0 0
>
> Dvs. den indeholder " som er reserveret tegn.
> Erstatningsstrengen genereres i et bash script som kalder
> perl scriptet. Hvordan kan man i et bash script i en streng
> erstat " med \", således at perl scriptet kan forstå det??
>
> Best Regards/Med venlig hilsen
> Torben Andersen
>



Legal Disclaimer:
The information contained in this message may be privileged and confidential. It is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete or destroy any copy of this message


Follow ups

References