2012-05-30 127 views
1

我正尝试从另一个脚本中调用脚本。这个想法是,程序应该接收从unix邮件直接发送给它的邮件作为标准输入,然后解析出一些内容并将其发送到新的脚本。无法从脚本中调用脚本

我无法达到新脚本。但是,只有脚本直接接受电子邮件时才会出现此问题。如果我把一个文件放进去,没有问题,它会找到新的脚本。

IE:如果我有一个名为“email.txt”的测试文件,我做的命令:

cat email.txt | ./receiveEmail.sh 

那么脚本调用工作正常。

但如果receiveEmail.sh直接收到电子邮件,它将无法调用新脚本。我知道这是它失败的地方,因为我得到了脚本一直运行到它尝试调用新脚本的日志的日志。

--------receiveEmail.sh---------- 
#!/bin/bash 
###do some stuff to parse the stdin coming in and get variable $subject and $body 

issue=`. /home/dlaf/bin/makeissue.sh` ->>>> this is the line that doesn't seem to work when the input is straight from the email rather than from a txt file i send it. 

我很困惑为什么。我想这可能是因为我错过了路径的某些部分?也许收到的电子邮件不知道我的完整路径究竟是什么?林不知道,因为当我输入命令行echo $LD_LIBRARY_PATH我只是得到一个空行,所以我认为它甚至没有设置,所以我不知道这可能是一个问题如何

+0

你如何知道它不工作?你在'makeissue.sh'中做什么?试着用一些'echo IM IN UR mAKEISSUE.SH'来代替它的内容来调试它,然后看看你是否得到了输出。 –

+0

我的回声是“im in makeissue.sh”,它永远不会进入 – Dan

+0

在正确调用它之前,程序是否可能退出? ('makeissue.sh'中的'echo'或'makeissue.sh'的源代码)对于debuggint,请尝试直接调用脚本(即在'receiveEmail.sh'中尝试'/ path/to/script'而不是' 。/ path/to/script'。 –

回答

0

当保存输出到一个变量使用bash,我通常做这个

read issue < <(~/bin/makeissue.sh) 
echo "$issue" 

如果输出为多行,你可以做到这一点

read -d'' issue < <(~/bin/makeissue.sh) 
echo "$issue" 

或本

mapfile issue < <(~/bin/makeissue.sh) 
echo "${issue[@]}"