awk输出不会打印到文件

时间:2018-08-06 06:12:32

标签: linux bash git unix awk

#!/usr/bin/env bash
for x in $(ls git-report/)
do
    repo_name=${x/.txt/}
    while IFS=' ' read -r col1 col2;
    do
        pushd "backend-projects/${repo_name}"
        git diff --numstat ${col2}..master | awk 'NF==3 {plus+=$2} END {print plus}' | cat >> /tmp/repos/${repo_name}.txt
        git diff --numstat ${col2}..master | awk 'NF==3 {minus+=$1} END {print minus}' | cat >> /tmp/repos/${repo_name}.txt
        cat /tmp/repos/${repo_name}.txt >> /tmp/script
        popd
        echo "# ----------- "
    done < "git-report/$x"
done

因此,我有两个目录,git-report和单独的文本文件,其中包含每个存储库的所有未合并分支名称。第二个backend-projects包含所有存储库。

手动执行这些命令会将文件写入文件,但是在运行bash脚本时失败。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

使用tee命令而不是cat和awk:

例如:

git diff --numstat ${col2}..master | awk 'NF==3 {plus+=$2} END {print plus}' | tee /tmp/repos/${repo_name}.txt

希望这对您有所帮助。