9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: erik quanstrom <quanstro@quanstro.net>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] late to the party - Here docs
Date: Wed,  7 Nov 2007 15:19:02 -0500	[thread overview]
Message-ID: <56beac6b65153d337a33b24e20172a60@quanstro.net> (raw)
In-Reply-To: <40711DDA-D0EC-496B-BB91-9132B3ADBD78@mac.com>

> Exactly: they are an aesthetic convenience compared with multiple  
> echo invocations
> but so are quotes compared with multiple backslashes.
> 
>>> though it is annoying they can't be used in fn definitions.
> 
> That's a bug which could be fixed ...
> 
> 
>> i was thinking about this topic again the other day during an
>> idle moment.  here documents are part of the parsing routine.
>> but they don't end up in rc's machine language.
> 
> Does this mean they don't work in loops too?

it could be fixed.  there must be a reason duff never made here
documents work.  i think they just don't fit the pattern.  one
justification i've seen for them is that they don't require the whole
here doc to be in the shell's memory.  the other is that "quoting
is easier".  unfortunately, to have here documents work within
functions, the whole here doc needs to be in the shell's memory.
so much for reason #1.  and one of the reasons for developing
rc was to cut down on the different quoting rules.  the bourne shell
has \-quoting, "-quoting, '-quoting and here document quoting
rules.  rc has ' quoting, \ quoting (only at the end of lines) and
here document quoting.

from your example, i'm not so sure why this

	{
		echo select $blah blah';'
		echo $imbibe_rat_urine
	}|mysql --blah-blah

is so terrible.

it turns out that you can use a here document in a loop

	; for(i in 1 2 3)
		cat <<!
		fu
		!
	fu
	fu
	fu

but it doesn't work if you use curly braces

	; for(i in 1 2 3){
		cat <<!
		fu
		!
		}
<hangs>
		!
	}

	fu: '/bin/fu' directory entry not found
	}
	fu: '/bin/fu' directory entry not found
	}
	fu: '/bin/fu' directory entry not found

since nobody's bothered to fix this, it's likely that it's just not used
very much.

- erik


  reply	other threads:[~2007-11-07 20:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-06 20:31 maht-9fans
2007-11-06 21:07 ` erik quanstrom
2007-11-07 16:41   ` dave.l
2007-11-07 20:19     ` erik quanstrom [this message]
2007-11-07 21:20       ` geoff
2007-11-07 21:23         ` erik quanstrom
2007-11-07 22:58       ` Martin Neubauer
2007-11-07 23:04         ` erik quanstrom
2007-11-07 23:24           ` Martin Neubauer
2007-11-08  0:37       ` dave.l
2007-11-08  1:21         ` Gregory Pavelcak
2007-11-06 21:54 ` arisawa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56beac6b65153d337a33b24e20172a60@quanstro.net \
    --to=quanstro@quanstro.net \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).