Android 如果[$(getprop | grep';[net.tcp.buffersize.default]:[409687380110208409616384110208]';)]
这条线怎么了Android 如果[$(getprop | grep';[net.tcp.buffersize.default]:[409687380110208409616384110208]';)],android,bash,grep,Android,Bash,Grep,这条线怎么了 if [ $(getprop | grep '[net.tcp.buffersize.default]:[4096,87380,110208,4096,16384,110208]') ] 如果grep在getprop输出中找到“net.tcp.buffersize…”,它应该返回一个真值。grep的参数是一个。字符[,]和具有特殊含义,因此参数不会按字面解释。要查找文字字符串,请将-F选项传递到grep。要查找与该字符串完全相同的行,请传递-F-x 您测试grep结果的方式没有任
if [ $(getprop | grep '[net.tcp.buffersize.default]:[4096,87380,110208,4096,16384,110208]') ]
如果grep在getprop输出中找到“net.tcp.buffersize…”,它应该返回一个真值。grep的参数是一个。字符
[
,]
和
具有特殊含义,因此参数不会按字面解释。要查找文字字符串,请将-F
选项传递到grep
。要查找与该字符串完全相同的行,请传递-F-x
您测试grep
结果的方式没有任何意义$(…)
获取输出(即匹配行)并将其拆分为单词(因为$(…)
周围没有双引号)。然后这些单词(可能是getprop
输出的一部分)被解析为[
内置的条件。要测试某些输入是否包含与grep
匹配的内容,请测试grep
命令的返回状态,并传递-q
选项以抑制输出
if getprop | grep -q -F -x '[net.tcp.buffersize.default]:[4096,87380,110208,4096,16384,110208]'; then …
我可以看到两个问题:
grep
命令中,需要转义左方括号if getprop | grep '\[net.tcp.buffersize.default]:\[4096,87380,110208,4096,16384,110208]'
更新
您还需要避开圆点:
if getprop | grep '\[net\.tcp\.buffersize\.default]:\[4096,87380,110208,4096,16384,110208]'
或者,正如Gilles指出的,您应该使用-F来搜索文本字符串,而不是使用正则表达式