[英]How can I obtain command returning status in linux shell
说,我在外壳grep "blabla" $file
中将grep "blabla" $file
称为grep "blabla" $file
。 我怎么知道grep是否在$ file中找到“ blabla”?
我尝试ret='grep "blabla" $file'
,通过查看ret
的值可以正常工作吗? 如果是,是ret
整数值还是字符串值或其他?
如果你确实做到
ret='grep "blabla" $file'
然后ret
将包含字符串“ grep” blabla“ $ file”。
如果你这样做(你的意思)
ret=`grep "blabla" $file`
然后ret
将包含grep
吐出的所有输出(与$file
“ blabla”匹配的行)。
如果您只是想知道grep
是否在$file
找到任何与“ blabla”匹配的行,那么您想检查grep -q blabla "$file"
的返回代码(请注意,当它们不在引号中时,用引号引起来)不含特殊字符,您应该引用变量引用)。
变量$?
包含最近执行的命令的返回码。 所以
grep -q blabla "$file"
echo "grep returned: $?"
将回显来自grep
的返回码,如果输出任何行,返回码将为0
。
但是,最简单的测试方法并对其进行处理是不使用$?
根本没有,只是将grep
调用嵌入到这样的if
语句中
if grep -q blabla "$file"; then
echo grep found something
else
echo grep found nothing
fi
运行命令时
grep blabla "$file"
状态保存在变量$?
。 0是好的,大于0是坏的。 所以你可以做
grep -q blabla "$file"
if [ $? = 0 ]
then
echo found
fi
或保存到变量
grep -q blabla "$file"
ret=$?
if [ $ret = 0 ]
then
echo found
fi
或者直接将if
与grep
一起使用
if grep -q blabla "$file"
then
echo found
fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.