Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么不是';这个shell脚本是否从stdin收集所需的信息?_Bash_Centos - Fatal编程技术网

Bash 为什么不是';这个shell脚本是否从stdin收集所需的信息?

Bash 为什么不是';这个shell脚本是否从stdin收集所需的信息?,bash,centos,Bash,Centos,用例:我希望将电子邮件从procmail传递到shell脚本,并让脚本将主题:标题值存储为一个变量和返回路径:标题值 作为测试,我使用以下脚本: #!/bin/bash while read data; do SearchCriteria1=$(echo "$data" | grep "Subject: " | cut -c 9-) SearchCriteria2=$(echo "$data" | grep "Return-Path: " | cut -c 13-

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

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

#!/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该行,留下该行或无行。然后用该行覆盖文件(在大多数迭代中,该行可能为空)。因此,如果这两个文件都为空,则最后一行输入既不包含
主题:
也不包含
返回路径:

我可能会这样做:

#!/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>"
#/usr/bin/env bash
而read-r键值;做
案例$key in
主题:)主题=$value;;
返回路径:)返回路径=$value;;
以撒
完成
回声“”
我说可能是因为我不知道输入会是什么样子

另请参见

非常感谢。这正是我所需要的。