繁体   English   中英

如何在Linux Shell中获取命令返回状态

[英]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

或者直接将ifgrep一起使用

if grep -q blabla "$file"
then
  echo found
fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM