Sed funktioniert nicht über Variable

406
Sim Sca

Ich versuche, den find -execBefehl mit einer Funktion zu kombinieren, die den relativen Pfad entfernt und an einen anderen Ort (mit demselben Baum) kopiert.

Das Skript sieht wie folgt aus:

function makeLinks(){ local file=$1 local src="$2" local dest="$3"  # This not works (don't strip $src from $file variable) rel="$(echo "$" | sed -e "s#$src##g")" echo "cp $file $/$"  # If I set the variable works: # t="overrides/mypath/templates/web/homepage.html" # echo $ # local rel=$(echo "$t" | sed -e "s#$src##g") # echo $rel }  export -f makeLinks  function relativeLinks(){ local src="overrides/mypath/" local dest="/var/lib/mypath/" local here=`pwd` find $src -type f -exec bash -c "echo `makeLinks '{}' $src $dest`" \; }  relativeLinks 

Aber es funktioniert nicht mit $fileVariablen.

In makeLinks()habe ich mit der $tVariablen getestet (siehe Kommentare), und ich habe festgestellt, dass mit der hartcodierten Variablen alles wie erwartet funktioniert.

Kann mir bitte jemand helfen ?!

PS: Um es klar zu sagen, ich bin daran interessiert zu wissen, warum diese Methode nicht funktioniert. Ich habe gerade eine Problemumgehung verbessert, indem ich die Liste der Dateien in einer bestimmten Datei speichere und diese Datei dann Zeile für Zeile lese.

0

0 Antworten auf die Frage