← Back to team overview

sslug-teknik team mailing list archive

Re: Scripting problem

 

Donald J Axel wrote:
---{sakset}---
root="/home/kim/projects/"
cmdPerl="perl -pi -e 's/${root//\//\/}\///g'"

${cmdPerl} "rapport xxx.html"
---{sakset}---

Når jeg prøver at debugge, så får jeg den rigtige kommando

echo "${cmdPerl} \"rapport xxx.html\""
perl -pi -e 's/\/home\/kim\/projects\/\///g' "rapport xxx.html"

Ved at erstatte "echo" med "eval", så virker det :-)

Skyldes det mon ikke at "eval" fjerner de mange quotes omkring
"rapport x.html" som du af en eller anden (ikke udledbar) grund har sat?
Som det fremgår af eksemplet, indeholder filnavnene mellemrum, dette er min (udledbare) grund til at anvende quotes. Problemet er at der i regex'en indgik en Bash variabel med en "præ-regex", som åbenbart gav nogle problemer i scriptet. Ved at tilføje et eval før, så hjalp det. Eval'en krævede dog at hele linien kunne evalueres og udføres, derfor var de ekstra escapede quotes (som er vist i "echo" linien) nødvendige.

/Kim

--
"Good judgment comes from experience; experience comes from bad judgment."


Follow ups

References