2

在 Solaris 上,看来我需要单引号“匹配行首”表达式:

 > sh
 $ echo offset 0.000000 2>&1 | grep ^offset | tail -1
 offset: not found
 $ Usage:        grep [-c|-l|-q] [-bhinsvwx] pattern_list [file ...]
         grep [-c|-l|-q] [-bhinsvwx] [-e pattern_list]... [-f pattern_file]... [file...]
         grep -E [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
         grep -E [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
         grep -F [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
         grep -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]

我可以通过单引号正则表达式很容易地解决这个问题:

 > sh
 $ echo offset 0.000000 2>&1 | grep '^offset'| tail -1
 offset 0.000000

我在自己使用 bash 的命令行中没有看到这一点,但它显示在脚本中,例如使用 system() 的 perl 脚本。

那个默认的 Solaris shell 是 Bourne shell 吗?^(插入符号)在默认 Solaris shell 的 shell 语言中还有什么其他含义?

4

1 回答 1

5

我相信 bourne shell 中的 '^' 被允许作为向后兼容的版本/等效的 '|' 字符。

你看到的信息似乎支持这种解释。

offset要确认,请制作一个仅打印“必须偏移”以查看的测试脚本。

(向后兼容此 ol' SunOS3 编码器中丢失的内容/dev/null;-))

IHTH。

于 2012-10-29T16:39:02.560 回答