0

次の行を含むbashスクリプトがあります。

for i in $(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print $0}'); 
 do
 print $i

出力:

A
https://domainname.com/projectxyz/uploads/Screen
shot
2012-05-08
at
1.57.50
PM.png

私が必要とするのは、次のような単一行の文字列です。

"Ahttps://domainname.com/projectxyz/uploads/Screen shot 2012-05-08 at 1.57.50 PM.png"

注: MAC OS の使用

4

3 に答える 3

1

次のように、サブシェルを引用符で囲んでみてください。

for i in "$(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print $0}')"
do
    echo $i
done

編集:

この方法を試すことができますか:

svn diff --summarize $REPOS@OLDREV $REPOS@NEWREV |
    while read line
    do
        echo $line
    done
于 2012-10-01T14:26:50.053 に答える
0

いくつかの研究開発を再度行った後、 awkツールではなく、デフォルトでスペースに設定されているIFS変数 value に基づいて文字列をトークン化するforループ障害であることがわかりました。awk が for ループの文字列全体を返す場合でも、それはIFSに応じて分割されます。したがって、Mac OS での私の場合の実用的なソリューションは次のとおりです。

IFS=$'\n'
for i in $(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print $0}'); 
 do
 print $i

IFSを設定せずにLinuxでは動作するが、MAC OSでは動作しない理由はまだわかりません

于 2012-10-02T13:00:14.640 に答える
0

次のようなものを試してください:

for i in $(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print }'); 
 do
 print $i

行全体を印刷します。

于 2012-10-01T14:13:13.333 に答える