2014-07-22 80 views
1

我一直在研究一個shell腳本,它通過從svn中檢查文件並調用Jar來執行一些部署任務。我一直在使用一個測試SVN網址沒有問題的發展。我現在需要測試標籤部署,突然svn給我的問題,當我嘗試使用輸入建立網址。svn導出在命令行上工作,但不在shell腳本中

我建立這樣的網址:

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 -模板)。

現在,當我嘗試運行我的shell,而不是讓「出口完成」,我得到如下:

./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。我檢查過,網址相同。我無法再現'。'無論我嘗試什麼,都會出現工作副本錯誤。

注:svn export -q svn://0.0.0.1/models/tags/"$tag"/deploy-filelist.yml在腳本中使用較早且正常工作

什麼可能的原因是什麼?

感謝

編輯在SVN的網址是如何建立

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:// ....'部分。網址形成正確,因爲我可以複製錯誤消息並使用它來導出文件。

+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" 
相關問題