bash函数中的pcregrep无法正常工作

时间:2017-10-24 13:28:46

标签: bash function pcregrep

我正在做一个检查配置文件的脚本。为了一次检查多行,我使用了pcregrep。当我在命令行中使用它时,一切都很好。

当我把它放在一个函数中时,它不会填充模式。

这是我的功能

function pcregrepF() {
    echo pcregrep -M "$string" $path
    if `pcregrep -M $string $path`; then
            echo "$path --> $string_msg is configured OK"
    else
            echo "$path --> $string_msg is NOT configured correctly"
    fi
}

echo pcregrep -M "$string" $path它只是一个控件来验证它是否需要pcregrep命令获取好的变量

当我使用函数执行文件时,我在控制台中有以下内容

/etc/yum.repos.d/nginx.repo --> 'NGINX repository' repository is NOT configured correctly
  • 有趣的事情:当我复制粘贴控制台中显示的echo pcregrep -M "$string" $path的结果时,即:

    pcregrep -M ".*[nginx]*\n.*name=nginx.*.repo*\n.*baseurl=http://nginx.org/packages/centos/.*.releasever/.*.basearch/*\n.*gpgcheck=0*\n.*priority=1*
    

它就像一个魅力

更新:实际上我试图解析CSV文件中的正则表达式和路径,下面的行是列名称和文件内容的例子:

function,string,string_msg,path,package,space,
pcregrepF,".*[nginx]*\\n.*name=nginx.*.repo*\\n.*baseurl=http://nginx.org/packages/centos/.*.releasever/.*.basearch/*\\n.*gpgcheck=0*\\n.*priority=1*\\n.*enabled=1",NGINX repository,/etc/yum.repos.d/nginx.repo,, ,

这个函数读取CSV文件并在第一列的函数中调用一个函数或另一个函数:

# Execute CSV - Read CSV file line by line and execute commands in   function of parameters that are read
function executeCSV() {
    file=/home/scripts/web.csv
    while IFS="," read function string string_msg path package space
    do
            $function $string $string_msg $path $package
    done < $file
}

executeCSV

我希望它可以帮助解决这个问题。

我错过了什么?

提前感谢

2 个答案:

答案 0 :(得分:0)

您正在尝试在脚本中执行Dumper输出;放弃反引号。

pcregrep

答案 1 :(得分:0)

发现错误

实际上,在阅读CSV文件时,该过程会添加&#39; &#39;围绕每个参数。我的csv如下:

function,string,string_msg,path,package,space,

pcregrepF,"something to search",message to show,path to the file,, ,

当读取第二个参数时,它会添加&#39; &#39;在它周围,所以最后的字符串将是'"something to search"',并且因为双引号而没有任何内容。

我是否以错误的方式读取了CSV文件????

当用bash从csv读取时,有没有办法放弃添加这些字符???

谢谢!