对shell中的一些标准输入或heredoc使用感到困惑

时间:2017-01-14 04:25:59

标签: linux bash shell

enter image description here

作为形象。所有命令都类似。 我知道如何使用它,但我真的不知道细节。 有谁知道吗?非常感谢你。

{ "_id" : "DxEraKtfYavoukdCK", "name" : "Aaron", "capacity" : 20,  "available_capacity" : 15, "location" : "1" }
{ "_id" : "yMhEggaGmS7iio9P4", "name" : "Benard", "capacity" : 20,  "available_capacity" : 20, "location" : "2" }
{ "_id" : "TTD2wedGYWaLctJHt", "name" : "Candy", "capacity" : 50, "available_capacity" : 15, "location" : "3" }

1 个答案:

答案 0 :(得分:4)

一些阅读材料,全部来自非常有用的Bash手册:

  • Redirection<filename) - 导致标准输入重定向到文件filename

  • Here documents<<WORD) - 导致标准输入从下一行重定向到脚本源,最多但不包括行WORD

  • Here strings<<<"string") - 使标准输入重定向到字符串string(就好像字符串被写入临时文件然后重定向标准输入一样)到那个文件)

  • Process substitution<(command)) - 启动一个执行command的进程,并在命令行上插入一个名称,该名称就像一个文件名,从而从该文件中读取“产生命令的输出

使用-来指示源文件是标准输入是许多命令所共有的,并且由Posix推荐。如果未指定文件,则许多命令从标准输入读取。有些像cat一样,实现了表示意图是从标准输入读取的两种方式。

请注意,-<(command)都是文件名参数,而<filename<<WORD<<<"string"是重定向。因此,虽然它们看起来很相似,但它们在引擎盖下却截然不同。它们的共同点是它们与输入有关;他们中的一些(但不是here-docs / strings)使用>而不是<具有与输出有关的类似物。