Ich versuche zu kombinieren find -exec Befehl mit einer Funktion, die den relativen Pfad entfernen und an eine andere Stelle (mit demselben Baum) kopieren soll.

Das Skript sieht folgendermaßen aus:

function makeLinks(){
    local file=$1
    local src="$2"
    local dest="$3"

    # This not works (don't strip $src from $file variable)
    rel="$(echo "${file}" | sed -e "s#$src##g")"
    echo "cp $file ${dest}/${rel}"

    # If I set the variable works:
    #    t="overrides/mypath/templates/web/homepage.html"
    #    echo ${t#$src}
    #    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 $file Variable.

Im makeLinks() Ich habe mit dem getestet $t Variable (siehe Kommentare), und mir ist aufgefallen, dass mit der fest codierten 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 Dateiliste in einer bestimmten Datei gespeichert und diese Datei dann Zeile für Zeile gelesen habe.

Sim Sca
quelle