我有一个场景,command < filename.txt
因此我可以传递 的内容filename.txt
并在command
.但是假设我想从文件中取出内容并仅在一个命令行操作中使用它们。看起来怎么样?
说一下内容filename.txt
如下:
To: [email protected]
Message: Some message
我尝试过类似的事情,但没有运气。当文本文件的内容以这种方式解析为命令时,它们会是什么样子?command "To: [email protected]\n Message: Some message"
答案1
在您的场景中,command
正在读取其标准输入;除非它接受提供此信息的其他方式,否则您需要继续以这种方式向其提供输入。所以如果你不想使用文件,使用printf
用管子:
printf "To: [email protected]\nMessage: Some message" | command
答案2
如果您希望将文字字符串传递到 STDIN 上的命令,则像 bash 和 ksh93 这样的新 shell 支持“此处文档”和“此处字符串”。事实上,大多数 shell 都支持这里的文档。
这里的字符串:
command <<<"some string"
这里的文档:
command <<END
this will be on
command's STDIN until
an END is encountered by itself
END
这里的文档使用 the 后面的东西<<
作为终止符,表示文档的结束。终止符必须单独出现在行的开头。不同的 shell 有一些更奇特的可能性,比如可以选择删除前导制表符、终止符上的不同引号控制是否扩展变量和 shell 元字符等。有关详细信息,请查看 shell 的手册页。
无论如何,您可以通过使用cat -
as 命令轻松测试这两个结构。我个人发现自己经常使用这里的字符串。