2017-09-15 58 views
1

我想了解一個bash表達解釋最後衝刺在bash /管道表達

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

這裏找到:https://github.com/openshift/origin/issues/15474

這是從OpenSift API的例子。第一部分oc process -f build/my-build-template.yaml GITSERVER=$GITSERVER返回一些JSON:

據我所知,這個JSON將是oc create -f <EXPECT FILE AS INPUT HERE>的輸入,它需要一個文件。

什麼是最後-... | oc create -f -

+1

它意味着管道從stdin讀取後的命令 – Inian

回答

3

許多工具的目的允許標準輸入的規格爲文件名「 - 」。這允許管道按預期工作,而不需要基於shell或基於OS的解決方法。

+2

應該強調的是,處理短劃線是工具的責任(在這種情況下爲'oc')。通常情況下,工具會在其手冊頁中指定''''可以作爲文件名來指示'stdin'應該被用來代替真實文件,或者*它根本不會支持這種破折號特徵*。許多工具沒有特殊的'-'處理,然後搜索這個名字的文件。那麼'/ dev/stdin'通常可以用來代替(取決於操作系統)。看看'man oc'來看'oc'是否支持這個。我沒有'oc',所以我不能查看它。 – Alfe