Hello Chris, you wrote (Sat 2012-Dec-01 18:18:47 -0400):
> cat - | > while read line Note that Bash's "read" without "-r" does some sort of backslash escaping. I'm not sure which characters are special and what exactly is replaced with what; but at the least, you'll get some backslashes stripped. When processing unknown input using "read", you'll almost always want to use "-r". $ echo 'a\\\b' | while read ; do echo "$REPLY" ; done a\b $ echo 'a\\b' | while read ; do echo "$REPLY" ; done a\b $ echo 'a\\b' | while read -r ; do echo "$REPLY" ; done a\\b $ echo '\\\' | while read ; do echo "$REPLY" ; done $ > line=`echo $line | sed 's/\(From: *[^ ]*\)/\[email protected]/'` .. > echo $line >> $tmpfile Note that "echo" (without "-e") simply reads all arguments and produces them as its output. In the lines above, the contents of the variable "line" will be split into words (by Bash) and passed to "echo" as multiple arguments. If those words were delimited (including e.g. leading and trailing whitespace) by something other than the delimiter used by "echo" on its output side (which should be the first character of the "IFS" special variable, i.e. usually a space), the other delimiters will be lost. To avoid having Bash split the variable value into words, make sure the contents of the variable gets passed to "echo" as a single argument: $ LINE='one two' $ echo $LINE one two $ echo "$LINE" one two > cat $tmpfile | $msmtp_path $@ Note that $@ is different from "$@". The latter form ensures that each argument given to your script will be passed as one argument instead of getting treated by word-splitting: $ sh -c 'echo $@ ; echo "$@"' -- 'one two' ' three four' one two three four one two three four Your script also doesn't seem to make a difference between an email's header and the body. And it isn't really prepared for filenames containing whitespace. A shorter suggestion (not tested, simply picking up your sed command) would be: #!/bin/sh #this replaces /usr/sbin/sendmail and adds domain to from address sed '1,/^$/ {s/\(From: *[^ ]*\)/\[email protected]/}' | /usr/bin/msmtp "$@" Cheers, Marcus -- Marcus C. Gottwald · <[email protected]> · https://cheers.de ------------------------------------------------------------------------------ Keep yourself connected to Go Parallel: DESIGN Expert tips on starting your parallel project right. http://goparallel.sourceforge.net/ _______________________________________________ msmtp-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/msmtp-users
