来自 rpm 的手册页:
--pipe CMD
Pipes the output of rpm to the command CMD.
为什么添加这个?为什么要使用它而不是通过 shell 本身进行管道传输?
答案1
rpm
当从 shell 调用时,该选项没有用处。
但是当从其他程序调用时,如果这些参数是由某种形式的用户输入构造的,那么它将简化非静态参数的传递rpm
(前提是调用程序是用一种不会强制调用 shell 来执行其他程序的语言编写的):
- 当不使用 shell 时,调用程序需要自行设置管道并分别调用和
rpm
等待CMD
。 - 当使用诸如 之类的 shell 时
sh -c ´rpm Argument1 Argument2 ...´ | CMD
,如果这些参数可能包含空格或 shell 元字符,则需要对参数进行额外的引用,以防止它们被拆分为单词或被 shell 解释:
如果 的某些参数rpm
是调用程序的用户输入,可能是这样,程序员在为 shell 构建参数列表时Tom and Alice´s dog
必须将其转换为。Tom\ and\ Alice\´s\ dog
(并且 的任何参数都CMD
必须以相同的方式引用。)
这速度较慢,容易出错,并且可能会引起安全问题。 - 使用该选项时
--pipe
,调用程序不需要这些。
(但是 的任何参数CMD
都必须像以前一样被引用,因为 CMD 是由 shell 解释的,而 shell 是从 调用的,rpm
因为CMD
是来自单个参数的单个单词rpm
。)