将文件名传递给命令时“command < filename.txt”看起来如何

将文件名传递给命令时“command < filename.txt”看起来如何

我有一个场景,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 命令轻松测试这两个结构。我个人发现自己经常使用这里的字符串。

相关内容