Я пытаюсь объединить команду 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: чтобы было ясно, мне интересно знать, почему этот метод не работает ... Я только что улучшил обходной путь, сохраняя список файлов в определенный файл, а затем читал этот файл построчно.