shell 脚本接收上游的管道输出

创建日期: 2024-11-08 15:30 | 作者: 风波 | 浏览次数: 14 | 分类: shell

来源:ChatGPT

在 shell 脚本中读取上一个脚本从管道输出的数据,并对每一行进行处理

ChatGPT 说:

在 Shell 脚本中,你可以通过从标准输入 (stdin) 读取数据来处理从管道传递的数据。以下是一个示例脚本,展示如何从前一个脚本通过管道传递的数据中逐行读取并进行处理。

假设你有两个脚本 script1.shscript2.sh

script1.sh

这个脚本生成一些数据并通过管道将数据传递给 script2.sh。

#!/bin/bash
# 生成一些数据并输出
echo "line 1: Hello World"
echo "line 2: Hello Shell"
echo "line 3: Hello Script"

script2.sh

这个脚本将从 script1.sh 接收到的数据逐行读取,并对每一行进行处理。你可以使用 while 循环和 read 命令来实现逐行读取。

#!/bin/bash
# 从标准输入逐行读取数据
while IFS= read -r line; do
    # 对每一行进行处理,这里只是简单地输出并附加一个前缀
    echo "Processed: $line"
done

执行

你可以使用管道将 script1.sh 的输出传递给 script2.sh:

./script1.sh | ./script2.sh

解释

script1.sh 生成一些数据并通过管道传递给 script2.shscript2.sh 使用 while 循环和 read 命令逐行读取数据,并在每一行前加上 Processed: 作为示例处理。

结果

运行以上命令会得到如下输出:

Processed: line 1: Hello World
Processed: line 2: Hello Shell
Processed: line 3: Hello Script

这样你就可以在 script2.sh 中对每一行数据进行自定义处理。

14 浏览
0 评论