Я пытаюсь объединить команду find -exec с функцией, которая должна удалить относительный путь и скопировать в другое место (с тем же деревом).

Сценарий выглядит следующим образом:

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

Но это не работает с переменной $file .

В makeLinks() я протестировал с переменной $t (см. Комментарии) и заметил, что с жестко закодированной переменной все работает как положено.

Кто-нибудь может мне помочь, пожалуйста ?!

PS: чтобы было ясно, мне интересно знать, почему этот метод не работает ... Я только что улучшил обходной путь, сохраняя список файлов в определенный файл, а затем читал этот файл построчно.

0