考虑从管道获得结果:

find .

现在我想在管道后面的第二个命令中访问实际管道(输入)的内容,然后例如打印两次。
find . | printf $arg$arg\n
#each filename would be printed twice per line

请注意,问题不是要打印两次从管道中获取的任何内容,我知道如何使用 bash for loop 或编写可以完成上述操作的脚本。 如何让 $arg 在内联脚本中快速使用它?

$0 和 $1 不像在脚本文件中那样工作。

最佳答案

简短回答: 您可以使用 sed 将每个文件打印两次:

find . | sed 's/.*/& &/'

sed 可以编辑输入的行。上面的命令说 s(替换).*(整行)& &(与它自己,两次)。

更长的答案: 当您将一个程序通过管道传输到另一个程序时,您将第一个程序的标准输出流连接到第二个程序的标准输入流。第一个程序打印的任何内容都将被视为第二个程序的输入。

不幸的是,对于您的示例,输入不是逐行块很好地映射到假设的 $args 变量。它来自一个巨大的整体流。如果您想将流的每一行打印两次,您可以使用 sed(它是一个流编辑器),但它只是逐行替换。

关于bash - 从管道获取参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17847103/

10-15 03:32
查看更多