解释bash/pipe表达式中的最后一个破折号

7

我正在尝试理解一个Bash表达式

oc process -f build/my-build-template.yaml  GITSERVER=$GITSERVER | oc create -f - 

在此处找到:https://github.com/openshift/origin/issues/15474

这是来自OpenShift API的一个示例。第一部分oc process -f build/my-build-template.yaml GITSERVER=$GITSERVER返回一些JSON:

我理解,这个JSON将成为oc create -f <EXPECT FILE AS INPUT HERE>的输入,它期望一个文件。

... | oc create -f -中最后一个-的目的是什么?


2
这意味着管道后面的命令将从stdin读取。 - Inian
1个回答

9

许多工具允许将标准输入指定为“-”的文件名。这样可以使管道正常工作,而不需要使用基于shell或操作系统的解决方法。


4
需要强调的是,处理短横线的责任在于工具本身(在这种情况下是“oc”)。通常,一个工具会在其手册中指定,“-”可以用作文件名表示应使用标准输入而不是实际文件,或者根本不支持这个短横线特性。许多工具没有对“-”进行特殊处理,然后会搜索具有这个名称的文件。在这种情况下,通常可以使用“/dev/stdin”(具体取决于操作系统)。查看“man oc”以确定是否支持此功能。我没有“oc”,所以无法查找。 - Alfe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接