假设我有一个命令cmd1,它从标准输入读取一行输入并产生一行输出.我还有另一个命令cmd2,它产生多行输出.如何在linux中管理这两个命令,以便为cmd2生成的每一行执行cmd1?如果我只是这样做:
# cmd2 | cmd1
Run Code Online (Sandbox Code Playgroud)
cmd1将只接受cmd2的第一行输出,产生一行输出然后关闭.我知道我可以使用像perl这样的解释器来完成这项工作,但我想知道是否有一种干净的方法只使用bash脚本来完成它.
谢谢
你可以使用这样的while循环:
#! /bin/bash
IFS=$'\n'
while read -r line ; do
echo "$line" | cmd1
done < <(cmd2)
Run Code Online (Sandbox Code Playgroud)
应该保留行中的空格.(-rin read是进入"原始"模式以防止反斜杠解释.)
| 归档时间: |
|
| 查看次数: |
2029 次 |
| 最近记录: |