当 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/