delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2000/02/14/14:21:18

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-help AT sourceware DOT cygnus DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
Message-ID: <38A8583D.FE08A609@veritas.com>
Date: Mon, 14 Feb 2000 11:32:13 -0800
From: Bob McGowan <Robert DOT McGowan AT veritas DOT com>
Organization: VERITAS Software
X-Mailer: Mozilla 4.7 [en] (WinNT; U)
X-Accept-Language: en
MIME-Version: 1.0
To: Dirk Fieldhouse <fieldhouse AT logica DOT com>
CC: cygwin AT sourceware DOT cygnus DOT com
Subject: Re: bash - $@ vs shift inconsistent
References: <200002141431 DOT OAA14601 AT cav DOT logica DOT co DOT uk>

$ bash --version
GNU bash, version 2.03.0(2)-release (i686-pc-cygwin)
Copyright 1998 Free Software Foundation, Inc.

Following is the output of your test cases, using the above version of
bash.  spaces1 uses the "for" loop and "$@", spaces2 uses the "while"
loop with "$1" and "shift":

$ spaces1 "a  b c" "there are 2 tabs:            :" "and a third arg"
a  b c
there are 2 tabs:                :
and a third

$ spaces2 "a  b c" "there are 2 tabs:            :" "and a third arg"
a  b c
there are 2 tabs:                :
and a third

I cut and pasted the above from my cygwin bash window.  Note that the
tab characters _were_ there, they just didn't translate in the cut/paste
;-)

Bob

Dirk Fieldhouse wrote:
> 
> I'm not sure that this is a specific CYGWIN issue, but I don't have access to a bash on a machine that allows spaces in filenames (surely the underscore character was invented to avoid these ...)
> 
> In bash 2.01.1 (b20.1/W95B), the following sequences which should have identical behaviour do not:
> 
> #!/bin/bash
> for arg in "$@" ; do
>     echo "$arg" # splits "arg with spaces" into 3 args
>     done
> 
> #!/bin/bash
> while [ "$1" ] ; do
>     echo "$1"  # maintains "arg with spaces" as one argument
>     shift
>     done
> 
> I haven't tested these against ash, nor with the latest bash release (2.03?), and I would be delighted to hear that this is a historical problem.
> 
> I am sure that the second behaviour is correct, especially given the bash manual's description of $@.
> 
> --
> Dirk Fieldhouse                 Logica UK Limited
> fieldhouse AT logica DOT com           75 Hampstead Road
> c=gb;a=attmail;p=logica;        London NW1 2PL
> o=LOGICA;ou1=UK;s=fieldhouse    UK
> +44 (20) 7637 9111
> - not speaking for Logica
> 
> --
> Want to unsubscribe from this list?
> Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

-- 
Bob McGowan
Staff Software Quality Engineer
VERITAS Software
rmcgowan AT veritas DOT com

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019