2014-07-22 2 views
1

Я работаю над скриптом оболочки, который выполняет некоторые задачи развертывания, проверяя файлы из svn и вызывая Jar. Я использую тестовый SVN-адрес без проблем для разработки. Теперь мне нужно протестировать развертывание тегов, и вдруг svn дает мне проблемы, когда я пытаюсь создать url с помощью ввода.svn экспортирует работу в командной строке, но не в сценарий оболочки

Я строю URL-адрес, как это:

svnurl=$(echo ${template//[# ]/}) 
    svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl") 
    urls=("${urls[@]}" $svnurl) 

, который лишь незначительно отличается от рабочего кода:

svnurl=$(echo ${template//[# ]/}) 
    urls=("${urls[@]}" $svnurl) 
    svn export "$svnurl" 

(в основном я беру IP и теги каталога из URL -template).

теперь, когда я пытаюсь запустить мою оболочку, вместо того, чтобы «экспортировать полный», я получаю следующее:

./deploy-files.sh: line 36: svn://0.0.0.1/models/tags/201407221642/ResponseA.xsl: No such file or directory 
svn: '.' is not a working copy 

Когда я бегу в терминале экспорта файлов правильно svn export svn://0.0.0.1/models/tags/201407221642/ResponseA.xsl. Я проверил, и URL-адреса идентичны. Я не могу воспроизвести «.». это ошибка рабочей копии, независимо от того, что я пытаюсь сделать.

Примечание: svn export -q svn://0.0.0.1/models/tags/"$tag"/deploy-filelist.yml используется ранее в сценарии, и что работает отлично

Что может быть причиной?

Благодаря

EDIT

подробнее о том, как SVN URLs построены

urls=() 
IFS=$'\n' yaml=($(cat deploy-filelist.yml)) 
for u in "${yaml[@]}"; do 
    if [[ $u =~ url.* ]] 
    then 
     template=$(echo $u | sed -e 's/url://g' -e 's/"//' -e 's/"$//') 
     svnurl=$(echo ${template//[# ]/}) 
     svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl") 
     urls=("${urls[@]}" $svnurl) 
     svn checkout "$svnurl" 
    fi 
done 

Я прочитал каждую строку из развертывания-filelist.yml. если строка содержит «url», я вырезаю требуемую строку и добавлю ее в шаблон «svn: // ....». URL-адрес сформирован правильно, так как я могу скопировать сообщение об ошибке и использовать его для экспорта файла.

+0

Можете ли вы дать достаточно информации (например, как использовать '$ {шаблон // [#] /}'), чтобы любой мог попытаться воспроизвести это? –

ответ

3

В этой строке:

svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl") 

вы пытаетесь выполнить строку, следовательно, ошибка «Нет такого файла или каталога».

Вы, вероятно, хотите, чтобы присвоить значение строки:

svnurl=svn://0.0.0.1/models/tags/"$tag"/"$svnurl" 

или

svnurl="svn://0.0.0.1/models/tags/$tag/$svnurl"