BASH:将循环输出附加到电子邮件

时间:2014-07-07 11:00:50

标签: bash

我希望此脚本的输出是电子邮件的正文,但我不想先将其重定向到文件,然后再转发到电子邮件,基本上没有外部登录/输出文件 - 所有操作都应该在脚本本身内完成 - 是否可以这样做?

示例:

#!/bin/bash

email() {

        echo "Results:"

}

for i in $(ls -1 test); do

if [ -f "test/$i" ]; then
        echo "'$i' it's a file."
else

        echo "'$i' it's a directory."
fi

done

email | mail -s "Test" an@example.com

输出:

$ ./tmp.sh 
'd1' it's a directory.
'f1' it's a file.

1 个答案:

答案 0 :(得分:1)

很简单:

#!/bin/bash

email() {

        echo "Results:"
        cat 
}

for i in $(ls -1 test); do

if [ -f "test/$i" ]; then
        echo "'$i' it's a file."
else

        echo "'$i' it's a directory."
fi

done |email | mail -s "Test" an@example.com

您需要将测试的输出作为email函数的输入,请注意cat只是让它通过。