我试图看看是否有可能从管道中获取输入,就好像它是一个文件一样。我有一个接受文件作为输入的脚本(例如python或c ++脚本)。但是我的文件很大,因此通常我会在上head -50 > small_file.txt运行脚本small_file.txt。我想看看是否有捷径,例如head -50 直接接受输入。我试过了,< $(head -50 )但是不行。
你一靠近,但正确的语法使用的是进程替换语法bash,zsh类型的炮弹< <()。就像是
script.py < <(head -50 file)
这个想法是当shell扩展<(..)结构时,内部的命令异步运行,并使其看起来好像来自文件(具体来说是命名FIFO)一样。
使用OP中所示的命令替换语法< $(..),的输出将按$(..)字面放置以供文件输入重定向读取。但这是行不通的,因为文件重定向操作符假定已将文件名提供给它,但只能看到一堆字符串输入。
值得注意的是,还有一种形式的流程替代的替代变体,>(..)它与上述变体相反,用于写入括号内运行的命令。与<(..)一个预期从替代以读取,并且该命令被设置为使用它作为标准输出。>(..)期望其中有一个写入替换,并且设置了内部命令以将其用作stdin。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。