双引号查询下的grep-v

双引号查询下的grep-v,grep,double-quotes,quoting,Grep,Double Quotes,Quoting,我们有一部分代码说明 "diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep ^\> | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir" 整个语句用双引号括起来(这是应用程序语法的要求)。当应用程序达到这个阶段时,它给出grep错误。 此语句在命令行上运行良好。但通过应用,给grep带来了错误 用法:grep[选项]。。。模式[文件] 有关详细信息,请尝试“grep--he

我们有一部分代码说明

"diff file1 file2 | /usr/bin/grep -v "#" |  /usr/bin/grep ^\>  |  /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir"
整个语句用双引号括起来(这是应用程序语法的要求)。当应用程序达到这个阶段时,它给出grep错误。 此语句在命令行上运行良好。但通过应用,给grep带来了错误

用法:grep[选项]。。。模式[文件]

有关详细信息,请尝试“grep--help”


所以不确定是第一个grep还是第二个grep是个问题。

似乎是双引号的问题。尝试将您的第一个grep更改为
/usr/bin/grep-v'#'
,将第二个grep更改为
/usr/bin/grep'^>'
您正在使用的
grep-v^>
表示“重定向”

例如,如果您这样做:

grep ^>output
所有输出将存储在文件
output

因此,您需要做的是引用
^>
,以便将其解释为您正在寻找的模式:

"diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep "^>" | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir"
                                                         ^  ^
顺便说一下,请注意,所有的
grep
s都可以这样减少:

diff file1 file2 | awk '/#/ || /^>/ {print $3}' | /usr/bin/xargs mkdir
                        ^^^ ^^ ^^^^
          either contains #  |   |
                             or starts with >

在这种情况下,从双引号改为单引号没有任何意义,但是。。。