---{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.