SVN экспорт работает в командной строке, но не в сценарии оболочки
Я работал над сценарием оболочки, который выполняет некоторые задачи развертывания, извлекая файлы из SVN и вызывая Jar. Я использую тестовый URL SVN без проблем для разработки. Теперь мне нужно протестировать развертывание тегов, и внезапно svn вызывает у меня проблемы, когда я пытаюсь создать URL с помощью ввода.
Я строю 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-шаблона).
теперь, когда я пытаюсь запустить свою оболочку, вместо того, чтобы "завершить экспорт", я получаю следующее:
./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
используется ранее в сценарии, и это прекрасно работает
Что может быть причиной?
Спасибо
РЕДАКТИРОВАТЬ
больше информации о том, как строятся svn URL
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
Я читаю каждую строку из deploy-filelist.yml. если строка содержит "url", я вырезаю нужную строку и добавляю ее в шаблон 'svn://....' part. URL сформирован правильно, так как я могу скопировать сообщение об ошибке и использовать его для экспорта файла.
1 ответ
В этой строке:
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"