-1

我在 ruby​​ 脚本中有一个简单的 shell 命令。

command="cat file_name | grep -e 'text1 text2.*'"

它在 AIX 和 Linux 上运行良好,但在 SOLARIS 上失败。我试图查看它使用的是哪个 grep,它返回/usr/xpg4/bin/grep的结果对我来说看起来不错。请让我知道还有什么可能导致问题。

提前致谢。

4

1 回答 1

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 等等。

于 2013-04-08T11:25:48.560 回答