我在 ruby 脚本中有一个简单的 shell 命令。
command="cat file_name | grep -e 'text1 text2.*'"
它在 AIX 和 Linux 上运行良好,但在 SOLARIS 上失败。我试图查看它使用的是哪个 grep,它返回/usr/xpg4/bin/grep
的结果对我来说看起来不错。请让我知道还有什么可能导致问题。
提前致谢。
在 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 等等。