在不同的命令之间传递初始stdin



我正在考虑编写一个数据来自stdin的文件,但要以流的第一行用于命名文件,第2+行是文件内容的方式对其进行操作。所以命令基本上是:

printf "foonbar" | tail +2 > $(head -1)

上面的问题是head从stdin接收它的值,但它似乎没有传递到tail上,从而生成了一个空文件foo

如果我使用,也会发生同样的情况

printf "foonbar" | tail +2 /dev/stdin > $(head -1 /dev/stdin)

所以我想知道是否有任何方法可以在多个命令中以非详细的方式使用初始stdin?

考虑一个小型shell脚本

#! /bin/sh
read filename
cat > $filename

通过shell进行阅读具有无缓冲阅读的优点。一些实用程序将在缓冲模式下读取,这可能会消耗第一行以外的一些数据。

相关内容

  • 没有找到相关文章

最新更新