[问题]我的shell无法运行啊

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
newman0708
帖子: 188
注册时间: 2007-09-22 13:09

[问题]我的shell无法运行啊

#1

帖子 newman0708 » 2008-09-12 14:32

我想在运行时 m3 aaa@btc.sh.cn "*bc"
把当前目录下的*bc都做为附件发送到指定邮箱,但是无法正常运行,
每次都报错。
newman0708@newman0708-desktop:~$ ./script/m3 aaa@btc.sh.cn "*bc"
m2 aaa@btc.sh.cn abc bbc cbc
$attachment= -a "abc" -a "bbc" -a "cbc"
./script/m3: line 65: echo "*bc" | mutt -s "*bc" "aaa@btc.sh.cn" -a "abc" -a "bbc" -a "cbc": command not found
Mail is sent.

想请教高手指点一下,谢谢

下面是我的shell ,文件名是m3

代码: 全选

#!/bin/bash
subject="$1"
subject=${subject##*/}
content="$1"
attachment=""

help_message()
{
        echo "Send attachment to the sender."
        echo "Usage1: m2 abc@btc.sh.cn attachment"
	echo "Usage2: m2 attachment" ", m2 \"*csv\""
	echo 
        exit 1
}

getAttachs(){
    tempattachment=""
    for file in `ls $attachment`
    do
	#echo "file: " $file
	tempattachment="$tempattachment  -a \"$file\""
    done
    attachment=$tempattachment
}

if [ $# -lt 1 ] ; then  #no parament
    help_message
elif [ $# -lt 2 ] ; then #1 parament
    #echo "1 parament"
    target="bk"

    attachment=$1

    subject="$1"
    subject=${subject##*/}

    content="$1"

    echo "m2" $attachment
elif [ $# -lt 3 ] ; then #2 paraments
    #echo "2 parament"
    target=$1
    attachment=$2

    subject="$2"
    subject=${subject##*/}

    content="$2"

    echo "m2" $target $attachment
fi

getAttachs

echo '$attachment=' $attachment

command="echo \"$content\" | mutt -s \"$subject\" \"$target\" $attachment"

`"$command"`

#echo "$content" | mutt -s "$subject" "$target" -a "$attachment" 


echo "Mail is sent."
echo 

头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2008-09-12 19:28

mutt 装了吗
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
newman0708
帖子: 188
注册时间: 2007-09-22 13:09

#3

帖子 newman0708 » 2008-09-12 22:02

BigSnake.NET 写了:mutt 装了吗
mutt装了,

echo "content test" | mutt -s "subject test " "abc@btc.sh.cn" -a "aaa"
是能够正常发送的。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#4

帖子 BigSnake.NET » 2008-09-12 22:05

代码: 全选

command="echo \"$content\" | mutt -s \"$subject\" \"$target\" $attachment"

`"$command"`

#echo "$content" | mutt -s "$subject" "$target" -a "$attachment" 
干吗不直接写,你这样当然是找不到了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
newman0708
帖子: 188
注册时间: 2007-09-22 13:09

#5

帖子 newman0708 » 2008-09-12 22:17

BigSnake.NET 写了:

代码: 全选

command="echo "$content" | mutt -s "$subject" "$target" $attachment"

`"$command"`

#echo "$content" | mutt -s "$subject" "$target" -a "$attachment" 
干吗不直接写,你这样当然是找不到了
直接写是可以正常发送的,这个我试过的。

我想在用的时候,可以把"*bc"这样的带通配符的做为附件,这样可以把相应的文件都变成附件一起发送,

如果直接写的话:
$attachment= -a "abc" -a "bbc" -a "cbc"
echo "$content" | mutt -s "$subject" "$target" "$attachment"

Error sending message, child exited 65 (Data format error.).
./script/m3: line 65: 6367 Done echo "$content"
6368 Segmentation fault (core dumped) | mutt -s "$subject" "$target" "$attachment"
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#6

帖子 BigSnake.NET » 2008-09-12 22:25

newman0708 写了:
BigSnake.NET 写了:

代码: 全选

command="echo "$content" | mutt -s "$subject" "$target" $attachment"

`"$command"`

#echo "$content" | mutt -s "$subject" "$target" -a "$attachment" 
干吗不直接写,你这样当然是找不到了
直接写是可以正常发送的,这个我试过的。

我想在用的时候,可以把"*bc"这样的带通配符的做为附件,这样可以把相应的文件都变成附件一起发送,

如果直接写的话:
$attachment= -a "abc" -a "bbc" -a "cbc"
echo "$content" | mutt -s "$subject" "$target" "$attachment"

Error sending message, child exited 65 (Data format error.).
./script/m3: line 65: 6367 Done echo "$content"
6368 Segmentation fault (core dumped) | mutt -s "$subject" "$target" "$attachment"
... 你这个不能这样写吧

代码: 全选

$attachment= -a "abc" -a "bbc" -a "cbc"
???

代码: 全选

echo '$attachment=' $attachment

command="echo "$content" | mutt -s "$subject" "$target" $attachment"

`"$command"` 


代码: 全选

echo '$attachment=' $attachment

echo "$content" | mutt -s "$subject" "$target" $attachment
不行?
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
newman0708
帖子: 188
注册时间: 2007-09-22 13:09

#7

帖子 newman0708 » 2008-09-12 22:32

我改成了BigSnake.NET提示的下面这种写法,

echo "$content" | mutt -s "$subject" "$target" $attachment


又报错了,

newman0708@newman0708-laptop:~$ ./script/m3 abc@btc.sh.cn "*bc"
m2 nch@btc.sh.cn abc bbc cbc
file: abc
file: bbc
file: cbc
$attachment= -a "abc" -a "bbc" -a "cbc"
$command= echo "*bc" | mutt -s "*bc" "nch@btc.sh.cn" -a "abc" -a "bbc" -a "cbc"
Can't stat "abc": No such file or directory
"abc": unable to attach file.
Mail is sent.


还是不行啊!
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#8

帖子 BigSnake.NET » 2008-09-12 22:35

代码: 全选

Can't stat "abc": No such file or directory 
没有该文件嘛
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
newman0708
帖子: 188
注册时间: 2007-09-22 13:09

#9

帖子 newman0708 » 2008-09-12 22:45

我在该目录下创建了这3个文件,

它们确实是存在的,

newman0708@newman0708-laptop:~$ ls -l *bc
-rw-r--r-- 1 newman0708 newman0708 4 2008-09-12 22:45 abc
-rw-r--r-- 1 newman0708 newman0708 4 2008-09-12 22:45 bbc
-rw-r--r-- 1 newman0708 newman0708 4 2008-09-12 22:45 cbc
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#10

帖子 eexpress » 2008-09-12 23:30

☎ cat mail-发附件.pl
#!/usr/bin/perl -w

my $file = $ARGV[0];
use Mail::Sender;
$sender = new Mail::Sender;

if ($sender->MailFile({
smtp => 'smtp.163.com',
from => 'xx@163.com',
to =>'xx@163.com',
to =>`zenity --list --column="邮件地址" --text="选择收件人" --title="发送邮件" xx\@163.com xx\@gmail.com`,
subject => '发送附件',
msg => "请查看附件。",
auth => 'LOGIN', #LOGIN, PLAIN, CRAM-MD5 and NTLM
authid => 'xx',
authpwd => 'xx',
file => "$file",
}) < 0) {
die "$Mail::Sender::Error\n";
}
print "Mail sent OK."
● 鸣学
回复