bash回音字符串>&燃气轮机;文件不工作

bash回音字符串>&燃气轮机;文件不工作,bash,echo,io-redirection,Bash,Echo,Io Redirection,我写了以下脚本: for filename in `find . -name '*'.cpp | grep $IN_REGEX | grep -v $OUT_REGEX` do echo "Output file is $OUTPUT_FILE" count=`git log --pretty=format: --name-only $filename | grep -v ^$ | wc -l` echo "$count $filename" >> $OUTPUT_

我写了以下脚本:

for filename in `find . -name '*'.cpp | grep $IN_REGEX | grep -v $OUT_REGEX` do echo "Output file is $OUTPUT_FILE" count=`git log --pretty=format: --name-only $filename | grep -v ^$ | wc -l` echo "$count $filename" >> $OUTPUT_FILE done 查找中的文件名-名称“*”.cpp | grep$IN_REGEX | grep-v$OUT_REGEX` 做 echo“输出文件是$Output\u文件” count=`git log--pretty=format:--name only$filename | grep-v^$| wc-l` 回显“$count$filename”>>$OUTPUT\u文件 完成 但输出文件中不会写入任何内容

请注意:

  • 我已经为OUTPUT\u FILE、IN\u REGEX和OUT\u REGEX设置了值
  • 正在执行循环中的代码。我用sh-x调用检查了这一点
  • 当我删除>>$OUTPUT\u文件时,我得到了输出
  • 我在脚本中尝试了一个touch$OUTPUT_文件,效果很好
  • 有人能指出我的错误吗?

    这行代码

    for filename in `find . -name '*'.cpp 
    
    是一个

    (文件名中的空格中断)

    你应该改为:

    while IFS= read -r file; do
        echo "Output file is $OUTPUT_FILE"
        count=$(git log --pretty=format: --name-only "$file" | grep -v '^$' | wc -l)
        echo "$count    $file" >> "$OUTPUT_FILE"      
    done < <(find . -name '*.cpp' | grep "$IN_REGEX" | grep -v "$OUT_REGEX")
    
    而IFS=read-r文件;做
    echo“输出文件是$Output\u文件”
    count=$(git log--pretty=format:--name only“$file”| grep-v'^$'| wc-l)
    回显“$count$file”>>“$OUTPUT\u file”
    
    完成<什么是IN_REGEX和OUT_REGEX?查找文件名的
    -名称“*”.cpp
    print?它们是限制文件列表的正则表达式。您运行的是舒尔
    bash
    ?这是
    zsh
    和其他一些shell中的一个功能,但不是
    bash
    。是的。这是狂欢节。我也有一个沙邦。另外,你能告诉我你在说什么功能吗?我在说
    set-C
    。在
    bash
    中,仅当文件存在时才禁止
    。在
    zsh
    中,如果文件不存在,它也将禁止
    >
    。我同意你的观点。但是我知道任何文件名中都没有空格。/gitlog.sh:28行:意外标记附近的语法错误
    use
    bash
    ,而不是
    sh
    =)@sputnick:或者编写不必要的
    bash
    特定的代码。sputnick,你知道“不必要”是什么意思吗?