From: Eric Blake Date: Sat, 19 Dec 2009 05:38:27 GMT Subject: Re: [PATCHv2] am: fix patch format detection for Thunderbird "Save As" emails Message-ID: <4B2C66D3.1070508@byu.net> In-Reply-To: <4B2C395A.6080300@gmail.com> According to Stephen Boyd on 12/18/2009 7:24 PM: >> Nope. You need either "\\015\\n" or '\015\n', since "\015" and "\n" >> are both >> undefined in portable shell. > > So, how about this? > > { > echo "X-Fake-Field: Line One"&& > echo "X-Fake-Field: Line Two"&& > echo "X-Fake-Field: Line Three"&& > git format-patch --stdout first | sed -e "1d" > } | sed -e "s/$/;/" | tr "'";"'" "'"\015"'"> patch1-crlf.eml Syntax error. "$/" is not defined, so the argument to sed is not portable. Then, following the tr, you have an unquoted ;, meaning you invoked 'tr "'"', followed by invoking the (non-existent) command '. > > Or maybe this? > > { > echo "X-Fake-Field: Line One"&& > echo "X-Fake-Field: Line Two"&& > echo "X-Fake-Field: Line Three"&& > git format-patch --stdout first | sed -e "1d" > } | sed -e "s/$/;/" | tr ";" "\\015"> patch1-crlf.eml Closer, but not there yet. "$/" is still not defined. Then, as a matter of style, '\' is more readable than "\\" for representing a backslash. So as long as we are shifting to '', we might as well do it everywhere in that line - write it like this: } | sed -e 's/$/;/' | tr ';' '\015' > patch1-crlf.eml and you should be set. -- Don't work too hard, make some time for fun as well! Eric Blake ebb9@byu.net