[[Bash]]在每一行中搜索组合的表达式

时间:2016-09-05 11:21:51

标签: bash

我是Bash Scripting的新手,我对CheckOurCodingRules.sh脚本有疑问:

我想搜索每一个' hPar,'在文本文件中,如果找到,应该检查是否还有一个' const'在同一行。

这就是我到目前为止所得到的但是这里出了点问题:

while read line
    do
        if [[ $line == *hPar\,* ]] && [[ $line == *const\*]];then
            DOCUMENTATION_TEST_A=1

        else
            echo DOCUMENTATION_TEST_A=0
        fi
    done < $INPUT_FILE

    if [[DOCUMENTATION_TEST_A=0]];then
    echo "error: Rule1: No const before hpar"
    fi

1 个答案:

答案 0 :(得分:1)

您的脚本存在一些问题,请参阅以下适用于我的代码:

DOCUMENTATION_TEST_A=0          # initial value

while read line                                                                 
    do                   
        # spaces between conditional and brackets, no backslashes                                                       
        if [[ $line == *hPar,* ]] && [[ $line == *const* ]]                            
        then                                                                    
            DOCUMENTATION_TEST_A=1                                              
            break  # optional, no need to scan the rest of the file
        fi
done < $INPUT_FILE                                                                      

# spaces and $, -eq is used for numerical comparisons
if [[ $DOCUMENTATION_TEST_A -eq 0 ]];   
then                                       
    echo "error: Rule1: No const before hpar"                                   
fi 

更清洁的解决方案是使用grep

if ! grep "hPar," $INPUT_FILE | grep "const" >/dev/null 
then
    echo "error: Rule1: No const before hpar"                                   
fi