开发者社区> 问答> 正文

Shell将管道值作为文件输入发送

我试图看看是否有可能从管道中获取输入,就好像它是一个文件一样。我有一个接受文件作为输入的脚本(例如python或c ++脚本)。但是我的文件很大,因此通常我会在上head -50 > small_file.txt运行脚本small_file.txt。我想看看是否有捷径,例如head -50 直接接受输入。我试过了,< $(head -50 )但是不行。

展开
收起
祖安文状元 2020-01-08 15:06:28 490 0
1 条回答
写回答
取消 提交回答
  • 你一靠近,但正确的语法使用的是进程替换语法bash,zsh类型的炮弹< <()。就像是

    script.py < <(head -50 file)
    
    

    这个想法是当shell扩展<(..)结构时,内部的命令异步运行,并使其看起来好像来自文件(具体来说是命名FIFO)一样。

    使用OP中所示的命令替换语法< $(..),的输出将按$(..)字面放置以供文件输入重定向读取。但这是行不通的,因为文件重定向操作符假定已将文件名提供给它,但只能看到一堆字符串输入。

    值得注意的是,还有一种形式的流程替代的替代变体,>(..)它与上述变体相反,用于写入括号内运行的命令。与<(..)一个预期从替代以读取,并且该命令被设置为使用它作为标准输出。>(..)期望其中有一个写入替换,并且设置了内部命令以将其用作stdin。

    2020-01-08 15:06:36
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Shell 脚本速查手册 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载