2

ループで実行findmergeして、場所がテキスト ファイルに保存されている特定のファイル セットをマージしようとしています。以下のようなもの:

while read p; do
    cleartool findmerge $p -type f -fversion .../main/LATEST -merge
done < filesToBeMerged.txt

ここでfilesToBeMerged.txtは、以下のようになります。

./MyProject/src/com/acme/AcmeManager.java
./MyProject/src/com/acme/AcmeLogger.java
./MyProject/build.xml

等々。

ただし、上記のコマンドを実行すると、ファイルの「最初の」行のみが処理されて停止します。これがファイル内のすべての行をループするにはどうすればよいですか? それとも、Perl スクリプトのようなものがこれに適していますか?

編集: bash バージョンの追加:

GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.

編集 2: bash スクリプトの追加autoMerge.sh:

f="./filesToBeMerged.txt"
fcontent=$(cat "${f}")

while read line; do
  echo "Starting to merge: ${line}"
  cleartool findmerge "${line}" -type f -fversion .../main/LATEST -merge
done <<< "${fcontent}"
#done < "${f}"
4

2 に答える 2

0

元のアプローチが機能するはずです。set -xoおそらく何が起こっているかを確認するためにスクリプトを入れてください。

于 2013-11-11T09:25:26.230 に答える
0

私は通常、最初にファイルを変数に入れます。

f="/full/path/to/filesToBeMerged.txt"

while read line; do
  echo "${line}"
done < "${f}"

代替手段を試すこともできます

f="/full/path/to/filesToBeMerged.txt"

while read line; do
  echo "${line}"
done < <"$(cat ${f})"

また

fcontent=$(cat "${f}")

while read line; do
  echo "${line}"
done <<< "${fcontent}"

私は引用符と中かっこで変数を使用することを好みます: not $p, but "${p}".

 cleartool findmerge "${p}" -type f -fversion .../main/LATEST -merge
于 2013-03-28T06:47:26.853 に答える