为什么读取挂起我的bash脚本?

时间:2012-08-03 17:56:33

标签: git bash unix git-post-receive post-receive-email

我使用readlines()对Python有类似的问题,但我不确定它是否在这里。

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

有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:2)

你不是在宣读读物。所以它只是等待来自stdin的输入。

如果您想要从文件中读取,则需要使用read,如下所示:

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

请注意< /path/to/file。这就是你实际上告诉读取文件的地方。

如果您想要从输入流中读取,可以使用while read,如下所示:

grep 'stuffInFile' /path/to/file |
while read -r oldrev newrev refname; do
  generate_email "$oldrev" "$newrev" "$refname"
done

答案 1 :(得分:1)

我会说它不是悬挂,而是等待输入。

注意并确保generate_email不从同一输入流中读取。