我在ruby脚本中有一个简单的shell命令。
command="cat file_name | grep -e 'text1 text2.*'"
它在AIX和Linux上运行良好但在SOLARIS上失败了。我试着看看它使用了哪个grep,它返回/usr/xpg4/bin/grep
,这对我来说很好看。请让我知道还有什么可能导致问题。
提前致谢。
答案 0 :(得分:1)
在Solaris上,我建议一定要使用GNU grep。 (因为你热衷于使用-e选项)
如果您使用的是 Solaris 10 :默认情况下会安装GNU grep,但可能不属于您的PATH,因为它位于/usr/sfw/bin
。二进制文件的名称为ggrep
。
如果您使用的是 Solaris 11 :默认情况下,GNU grep会安装在全局区域中,但默认情况下不会进入本地区域。如果安装它将已经在您的PATH中,但就像在Solaris 10上一样,它被称为ggrep
。如果没有安装,则只需执行pkg install gnu-grep
。
为了使您的脚本可移植,您可以在脚本的开头执行类似的操作:
# Default values
GREP=grep
EGREP=egrep
if [ `uname` == "SunOS" ]; then
GREP=ggrep
EGREP=gegrep
fi
..然后在您的脚本中的任何地方,当您想要执行'grep'等时,您会引用$ GREP。