gpt4 book ai didi

bash - 为什么这个 shell 脚本不从标准输入收集所需的信息?

转载 作者:行者123 更新时间:2023-12-04 19:35:06 24 4
gpt4 key购买 nike

用例:我想将电子邮件从 procmail 传递到 shell 脚本,并让脚本存储 主题: header 值作为一个变量,返回路径: header 值。

作为测试,我正在使用以下脚本:

#!/bin/bash
while read data; do
SearchCriteria1=$(echo "$data" | grep "Subject: " | cut -c 9-)
SearchCriteria2=$(echo "$data" | grep "Return-Path: " | cut -c 13-)
echo "$SearchCriteria1" > test.1
echo "$SearchCriteria2" > test.2
done

echo 语句只是一个测试。我计划稍后在脚本中使用这些变量。

但是,当我尝试此操作时, test.1 和 test.2 只有空行。我知道我遗漏了一些明显的东西。有人可以指出我正确的方向吗?

最佳答案

对于每一行,您都对行进行 grep,留下一行或没有行。然后你用该行覆盖一个文件(大多数迭代可能是空的)。因此,如果这两个文件都是空的,则输入的最后一行都不包含 Subject:Return-Path: .

这可能是我的做法:

#!/usr/bin/env bash
while read -r key value; do
case $key in
Subject:) subject=$value;;
Return-Path:) return_path=$value;;
esac
done
echo "<$subject> <$return_path>"

我说可能是因为我不知道输入会是什么样子。

另见 http://mywiki.wooledge.org/BashFAQ/001

关于bash - 为什么这个 shell 脚本不从标准输入收集所需的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com