Ugh, HTML-Mail I'm so not going to read this. Please change your mail client to something sane.
On Mon, Apr 05, 2010 at 12:32:58AM +0200, Paul Malherbe wrote: > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> > <html> > <head> > <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> > </head> > <body text="#000000" bgcolor="#ffffff"> > On 05/04/10 00:02, Uriel wrote: > <blockquote > cite="mid:g2m5d375e921004041502xe31f4cby6cfae45b67e18...@mail.gmail.com" > type="cite"> > <pre wrap="">I just want to say thanks for reminding me how absolutely > hideous sh > scripts are and to stay away from them. > > I honestly can't see why anyone would willfully write anything in sh > anymore (of course, plain sh is better than using bash, ksh or any > other horrible extensions of an already awful thing). > > uriel > > > On Sun, Apr 4, 2010 at 7:03 PM, <a class="moz-txt-link-rfc2396E" > href="mailto:n...@lavabit.com"><n...@lavabit.com></a> wrote: > </pre> > <blockquote type="cite"> > <blockquote type="cite"> > <blockquote type="cite"> > <pre wrap=""># grep thinks the second argument is a file > </pre> > <blockquote type="cite"> > <pre wrap="">BL="^index.md$ ^images$" # Black list > </pre> > </blockquote> > <pre wrap=""> BL="^index.md$\|^images$" # Black list > </pre> > </blockquote> > <pre wrap=""> > Wrong, take a look at this line: > BL=`echo ${BL} | sed -e "s/\( \+\|^\)/ -e /g"` > </pre> > </blockquote> > <pre wrap=""> > Yes, -e allows you to do this. However, in the original code you had > </pre> > <blockquote type="cite"> > <pre wrap="">BL="^index.md$ ^images$" # Black list > </pre> > </blockquote> > <pre wrap="">and later... > </pre> > <blockquote type="cite"> > <pre wrap=""> for i in `ls ${SITE}/${DIR} | grep -v ${BL}`; do > </pre> > </blockquote> > <pre wrap="">I know the blacklist ($BL) was meant as an example, but if > you run this > code you'll see that grep errors out because it thinks `^images$' is a > file. > > If you really want people to use space as a delimiter, then either do: > > for i in BL; do > tmp="$tmp -e $i" > done > BL=$tmp > grep -q $BL > > or: > > set -- $BL > IFS='|' > BL=$* > grep -Eq "$BL" ... > > Both are pretty stupid. > > </pre> > <blockquote type="cite"> > <blockquote type="cite"> > <pre wrap=""># echo | blah is becoming rampant; let's not ignore it > this time > </pre> > <blockquote type="cite"> > <pre wrap="">QUERY=`echo ${REQUEST_URI} | sed -e > "s,.*${BIN}/*\(.*\),\1,"` > </pre> > </blockquote> > <pre wrap=""> QUERY=`sed "s,.*$BIN/*\(.*\),\1," <<-! > $REQUEST_URI > ! > </pre> > </blockquote> > <pre wrap=""> > So, it is better to use 3 loc for this? > </pre> > </blockquote> > <pre wrap=""> > Sadly, POSIX shell sucks. In bash, perl and powershell you could get > away with a less verbose herestring: > > grep pattern <<< str > > </pre> > <blockquote type="cite"> > <blockquote type="cite"> > <pre wrap=""># Why heredoc instead of subshell? > # Compare: time for i in `seq 1 1000`; do echo str | grep pattern > </pre> > <blockquote type="cite"> > <pre wrap="">/dev/null; done > </pre> > </blockquote> > <pre wrap=""># ...with: time for i in `seq 1 1000`; do grep pattern > >/dev/null <<-! > # str > # ! > # heredocs can also contain subshells... you save one > # from `cmd | cmd` > </pre> > <blockquote type="cite"> > <pre wrap=""> DIR=`dirname ${QUERY} | sed -e > "s,/*$,,"`> > # done > </pre> > </blockquote> > </blockquote> > <pre wrap=""> > I see, this is a more interesting argument for using heredocs. But, > just a question (because I don't really know) is heredocs as standard as > a plain "echo blah | cmd" ? > </pre> > </blockquote> > <pre wrap=""> > heredocs are defined by POSIX, if that's what you mean by standard > > > Semi unrelated question: why are so many people at suckless using ` ` > instead of $( ) ? I've seen it here, dmenu_path, surf's config.h... etc. > > $( ) only fails in very, very old shells... think original bourne > > > > > > </pre> > </blockquote> > <pre wrap=""> > > </pre> > </blockquote> > Hi<br> > <br> > Again I totally agree with Uriel, rather use a good scripting language > like python ;-)<br> > <br> > <div class="moz-signature"> > <style type="text/css"> > <!-- > P { color: #000000 } > --> > </style> > <p><font face="Helvetica, Arial, sans-serif">Regards </font><br> > <br> > <font face="Helvetica, Arial, sans-serif"><font size="4">Paul<br> > </font></font><font face="Helvetica, Arial, sans-serif"><font > style="font-size: 8pt;" size="1"></font></font> </p> > </div> > <br />-- > <br />This message has been scanned for viruses and > <br />dangerous content by > <a href="http://www.mailscanner.info/"><b>MailScanner</b></a>, and is > <br />believed to be clean. > </body> > </html> > >