对于我们是否应该将fgrep或grep与开关(即)一起使用以实现可移植性的问题的答案,我有这个有争议的评论。到目前为止已经曝光的要点是:-F
grep -F
grep -F
:
grep
已宣布fgrep
弃用。fgrep
:
grep -F
选项之前。fgrep
已弃用,但由于其历史用途,他们似乎仍坚持使用它。如果您考虑旧的(非常旧的)系统,那么您可能会发现其中一些系统没有grep -F
(我认为这种情况发生的可能性非常小)。但是我们真的需要担心那些非常非常旧的机器并为此避免 POSIX 标准吗!!
如果您考虑当前情况并包括那些旧机器(据称/据称没有grep -F
),那么支持的系统fgrep
将会更多。
另一方面,如果你展望未来,fgrep
它将成为历史,grep -F
并将作为 POXIS 标准战胜它。
此外,现在使用 POSIX 标准以获得更好的可移植性不是一个常识吗?
grep -F
是POSIX。fgrep
不是。使用grep -F
并明确说明您的脚本依赖于 POSIX grep
。明确声明的依赖项就是您所需要的。
我想你可以同时使用两者......
if command -v fgrep
then _grepf(){ fgrep "$@"; }
else _grepf(){ grep -F "$@"; }
fi >/dev/null
Run Code Online (Sandbox Code Playgroud)
...但是做这样的事情很麻烦,而且通常是在浪费时间。在您的依赖项列表中设置最低级别的一致性,并允许标准处理其余部分。