Shell script grep command -c (count) -- 命令行顺序重要吗?

Shell script grep command -c (count) -- does command-line ordering matter?

只是一个关于疑问的快速问题。这两者有什么区别:

grep "$genre" "$i" | grep "$type" -c

grep "$genre" "$i" | grep -c "$type"

他们可能做同样的事情吗?

man grep可以看出,-c开关属于so-called“通用输出控制”。这些开关可以放在 grep ... 命令中的不同位置,这对一般结果没有影响,所以实际上,你提到的两行都是相等的。

grep "$type" -c 的 POSIX standard-mandated 行为,假设 $type 不扩展为以破折号开头的字符串,是将 -c作为文件名。

只有 grep 的非标准版本(例如由 GNU 项目构建并在 Linux 系统上常见的版本)会将 -c 视为启用“计数”行为的选项当它不在第一个位置参数之前时。

将脚本编写为需要非标准工具是不好的做法,除非它们从这些工具中获得一些具体的好处。使用 grep -c "$type".