有没有办法回显通过管道传输到下一个命令的输出?例如,假设我可以从文本文件中读取文件名,然后对该文件运行命令:
cat files.txt | xargs -I{} -d"\n" command
命令运行并且输出显示在终端中,有没有办法也打印出文件名?
假设输入文件包含:
file1.txt
file2.txt
预期输出:
file1.txt
[output of command with file1.txt as input]
file2.txt
[output of command with file2.txt as input]
有没有办法也可以在标准输出中获取file1.txt
and ?file2.txt
答案1
你最好写函数:
Function()
{
cat file1.txt | xargs -I{} -d"\n" command >> /dev/console;
cat file2.txt | xargs -I{} -d"\n" command >>/dev/console;
}
答案2
使用cat
是更多的工作,因为你有一个子流程。我想使用 while 循环会更快
while read filename
do
# do something with $filename
done<file_to_be_processed
答案3
要获取您想要使用的文件名echo
来获取您可以使用的内容cat
。如果你想保持灵活性(例如,用cat files.txt
命令交换你的find ....
命令,你应该保留你的调用,xargs
但当时只做一个文件:
cat files.txt | xargs -L 1 /path/to/your_script
和your_script
:
#!/bin/bash
echo $1
cat $1
答案4
Shell 命令tee
完全按照您的要求执行(回显通过管道传输到下一个命令的输出)。只需通过管道将其传输到tee
( some_command | tee
) 即可。查找命令的手册页以获取确切的用法、示例和任何其他详细信息。