Grep命令没有给出预期的输出

时间:2016-06-17 08:22:44

标签: bash shell

我在shell脚本中运行以下行

echo "$(tr -s '\n' ' ' < ${data[1]} | grep -oP '<af:popup.*?"${data[2]}".*?>')"
echo "(tr -s '\n' ' ' < ${data[1]} | grep -oP '<af:popup.*?"${data[2]}".*?>')"

该命令应该从文件\n转换所有${data[1]},并在此文件中包含如下模式:

(af:popup.*?logicalCostingRecordExistsPopup.*?)

问题是第一行是返回空数据。只是为了验证我的脚本,我回应了命令来检查被替换的内容并直接在shell中运行。输出如下所示

tr -s '\n' ' ' < hello.jsff | grep -oP '<af:popup.*?  logicalCostingRecordExistsPopup.*?>' 

当我直接在shell中运行它时,它会给我预期的输出。

不知道为什么在shell脚本中运行时没有提供输出

1 个答案:

答案 0 :(得分:0)

不使用双引号,而是使用单引号。

class Square{
    int r=1;
     int power(int n, int p) throws Exception
    {
         int s=n;
        if(n<0||p<0)
        {
        throw new Exception("n and p must be positive");
        }

    if(p==2)
    {
        return n*n*r;
    }
    else
    {
        r=r*n;
        return power(n,p-1);
    }

    }
}