Sed не работает над переменной

330
Sim Sca

Я пытаюсь объединить 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 "$" | 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 

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

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

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

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

0

0 ответов на вопрос

Похожие вопросы