1

私は、svn からファイルをチェックアウトし、Jar を呼び出すことによって、いくつかのデプロイ タスクを実行するシェル スクリプトに取り組んできました。開発に問題なくテスト SVN URL を使用しています。タグの展開をテストする必要があるのですが、入力を使用して 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"

(基本的に、url-template から IP とタグのディレクトリを取り出しています)。

「export complete」を取得する代わりに、シェルを実行しようとすると、次のようになります。

./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://....」部分に追加します。エラーメッセージをコピーし、それを使用してファイルをエクスポートできるため、URL は正しく形成されています。

4

1 に答える 1

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"
于 2014-07-22T16:27:45.613 に答える