linux - bash 使用 grep 时 if 语句出现语法错误

标签 linux bash

i 等于 0 时,我在第 7 行遇到语法错误(并且 if 应该失败)。如果我在 grep 成功且 i 不为 0 的文件上使用它,则程序可以正常工作。

可能是什么问题?

#!/bin/bash

function search_author_tests {
    while read line; do
        i=`grep -c "commit version: "$line"" "$1"/QA/*.tst`
        echo $i
        if (($i>0)); then
            echo -n $line 
            grep "result" `grep -wl "commit version: "$line"" "$1"/QA/*.tst`|cut -d ":" -f2
        fi  
    done
}   


grep -w "$2" "$1"/*.comp | cut -d" " -f2 | sort -n| search_author_tests $1

错误示例: 第 7 行:((:/u1/044/adaramir/mtm/ex1/q3/test3/cv/QA/1.tst:1 /u1/044/adaramir/mtm/ex1/q3/test3/cv/QA/2.tst:0>0:语法错误:需要操作数(错误标记为“/u1/044/adaramir/mtm/ex1/q3/test3/cv/QA/1.tst:1 /u1/044/adaramir/mtm/ex1/q3/test3/cv/QA/2.tst:0>0")

最佳答案

您正在从多个文件中进行 grep,并且您会看到每个文件的计数。 将第 7 行的分配更改为

i=$(cat "$1"/QA/*.tst 2>/dev/null | grep -c "commit version: $line")

关于linux - bash 使用 grep 时 if 语句出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29473414/

相关文章:

bash - 如果进程告诉自己停止运行,Runit 将错误退出

linux - 用于登录网站和下载文件的 Bash 脚本

c++ - 当我尝试包含 OpenNI.h 时没有这样的文件或目录

linux - 如何准确复制文件夹

linux - 安装 zenity 时出现错误

PHP Excel - 不适用于 linux

bash - 用 bash 将文件中的两行替换为一个新行

C 宏 - 避免宏扩展

linux - 如何在 bash 脚本中将 select 与 awk 一起使用?

php - 在不显示 shell 窗口的情况下执行 bash 脚本