0

Pythonを使用した場合と同様の問題が発生しましたreadlines()が、ここで同じかどうかはわかりません。

readコマンドがbashスクリプトをハングさせています。

generate_email()
{
    # --- Arguments
    oldrev=$(git rev-parse $1)
    newrev=$(git rev-parse $2)
    refname="$3"

    # ... some code ...
}

# ... more code ...

while read oldrev newrev refname
do
    generate_email $oldrev $newrev $refname
done

これを修正する方法について何かアイデアはありますか?

4

2 に答える 2

2

read に何かから読み取るように指示しているわけではありません。からの入力を待っているだけstdinです。

ファイルから読み取りたい場合は、次のreadように使用する必要があります。

while read -r oldrev newrev refname; do
  generate_email "$oldrev" "$newrev" "$refname"
done < /path/to/file

に注意してください< /path/to/file。それは、実際に read にファイルから読み取るように指示しているところです。

入力ストリームから読み取りたい場合は、次のwhile readように使用できます。

grep 'stuffInFile' /path/to/file |
while read -r oldrev newrev refname; do
  generate_email "$oldrev" "$newrev" "$refname"
done
于 2012-08-03T18:56:27.730 に答える
1

ぶら下がっているのではなく、入力を待っているだけだと思います。

generate_emailただし、が同じ入力ストリームから読み取らないように注意してください。

于 2012-08-03T18:56:17.993 に答える