前端之家收集整理的这篇文章主要介绍了
bash – 从管道获取参数,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑从管道获得结果:
find .
现在我想在管道后面的第二个命令中访问实际管道(输入)然后例如打印两次.
find . | printf $arg$arg\n
#each filename would be printed twice per line
请注意,问题不是要求打印一次从管道获取两次,我知道如何使用bash for循环或编写可以完成上述操作的脚本.如何让$arg在内联脚本中快速使用它?
$0和$1不像脚本文件那样工作.
简答:您可以使用sed打印每个
文件两次:
find . | sed 's/.*/& &/'
Sed可以在输入时编辑行.上面的命令说s(替换).*(整行)& &安培; (与自己,两次).
更长的答案:当您将一个程序传送到另一个程序时,您将第一个程序的标准输出流连接到第二个程序的标准输入流.第一个程序打印的任何内容都将被视为第二个程序的输入.
不幸的是,对于您的示例,输入不是逐行排列的块,它很好地映射到假设的$args变量.它有一个巨大的整体流.如果你想打印两次流的每一行,你可以使用sed(这是一个Stream EDitor),但它只是逐行替换.