zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <pws@ibmth.df.unipi.it>
To: zsh-workers@math.gatech.edu
Subject: Re: Notes on bash(1)
Date: Wed, 09 Dec 1998 10:01:29 +0100	[thread overview]
Message-ID: <9812090901.AA23162@ibmth.df.unipi.it> (raw)
In-Reply-To: "Phil Pennock"'s message of "Wed, 09 Dec 1998 03:25:32 NFT." <19981209032532.54741@athenaeum.demon.co.uk>

Phil Pennock wrote:
> * bash has arrays.  'declare', 'local' & 'readonly' each accept '-a' to
>   declare an array.  Is it reasonable to add '-a' to 'typeset'?  This
>   would automatically duplicate the bash-ism.

It's not exactly essential, since bash and zsh have rather different
extensions to sh in any case.  They're only similar in as much as they
both include sh.  It's hard enough keeping ksh emulation working.

>   Further, would it be an idea to then deprecate 'set -A' which
>   overloads parameter setting onto 'set'?

That's needed for ksh.

> * ${parameter/pattern/string} and ${parameter//pattern/string}
>   pattern is expanded as per pathname expansion.  Longest match of
>   pattern against parameter is replaced with string.  Once for / and for
>   all instances with //.  #pattern anchors to beginning, %pattern
>   anchors to end.  string may be null.  Applied to an array, this works
>   on each element.
>   zsh has a some of this with the colon-modifier 's'.

This would be quite useful, since :s only does simple string
replacement, and it doesn't clash with anything, yet, though if you
wait long enough...

Maybe it can be done quite simply by upgrading the extra flags Sven
added for # and % to match internal bits of a parameter's value.

>   The anchors in particular are nice.  They would make it easy to fully
>   replicate basename(1) without forking.  We can't currently (AFAIK)
>   accurately duplicate $(basename file .ext) (think - filename: .ext.ex)
>   % base=${var:t:s/%.ext//}

If you mean `remove the extension if and only if it's .ext', then you
can do ${${var:t}%.ext}.

> * ${parameter:offset} and ${parameter:offset:length} provide substring
>   and array extraction.  Both length and offset are arithmetic
>   expressions.  length>=0.  offset may be negative to measure from end.
>   zsh notably has ${parameter[start,stop]} already.  How desirable is
>   this alternate syntax, given that zsh allows history modifiers in the
>   same place?  It doesn't look like there would be a conflict, provided
>   zsh requires $[...] for variables there.  Testing, bash allows:
>   $ foo=abcde; t=2; echo ${foo:t}

I think it's too close to the history modifiers and we'd better stick
with the subscript notation, unless we're aiming at a bash
compatibility mode which is really going a bit far.

It worries me slightly that there are people out there who don't know
the difference between bash and sh --- which is their problem, but one
day they may start inflicting it on other people.

-- 
Peter Stephenson <pws@ibmth.df.unipi.it>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy


  reply	other threads:[~1998-12-09  9:19 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-12-09  3:25 Phil Pennock
1998-12-09  9:01 ` Peter Stephenson [this message]
1998-12-09 17:04   ` PATCH: 3.1.5: bash ${.../old/new} Peter Stephenson
1998-12-10 15:52     ` Strange substring search behaviour Peter Stephenson
1998-12-09 19:43   ` PATCH: Docs out of sync Phil Pennock
1998-12-12  7:45     ` Bart Schaefer

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=9812090901.AA23162@ibmth.df.unipi.it \
    --to=pws@ibmth.df.unipi.it \
    --cc=zsh-workers@math.gatech.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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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).