shell 脚本中,grep无法读取前一个命令结果输出的一个原因

前几天,因为要实现一个小功能,想用shell脚本来写点逻辑。遇到一个问题这里记录分享一下:

查看so文件中是否有未实现的函数,使用ldd查看,结果如下:

shell 脚本中,grep无法读取前一个命令结果输出的一个原因_第1张图片


我想通过获取ldd -r命令的结果中是否存在“undefined symbol"这样的结果。很自然会想到使用grep来获取

便这样来写:check_res=`ldd -r name.so|grep undefine`

结果变量check_res死活就是一个空值,一直在查是什么原因。

最后发现,管道传给grep的数据,只有标准输出,而undefined symbol数据是在错误输出中。

所以解决办法是需要将标准错误重定向到标准输出中,才能获取结果值。

如下写法:

check_res=`ldd -r name.so 2>&1|grep undefine`

这样就能成功获取值了

你可能感兴趣的:(工作,linux)