bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bash Ref Manual on tokenization omits consideration of expansions


From: Allen Halsey
Subject: Bash Ref Manual on tokenization omits consideration of expansions
Date: Wed, 24 Feb 2010 21:34:23 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Configuration Information [Automatically generated, do not change]:
Machine: i686
OS: cygwin
Compiler: gcc-4
Compilation CFLAGS:  -DPROGRAM='bash.exe' -DCONF_HOSTTYPE='i686' 
      -DCONF_OSTYPE='cygwin' -DCONF_MACHTYPE='i686-pc-cygwin' 
      -DCONF_VENDOR='pc' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' 
      -DSHELL -DHAVE_CONFIG_H -DRECYCLES_PIDS   -I.  
      -I/usr/src/bash-3.2.49-23/src/bash-3.2 
      -I/usr/src/bash-3.2.49-23/src/bash-3.2/include 
      -I/usr/src/bash-3.2.49-23/src/bash-3.2/lib   -O2 -pipe 
uname output: CYGWIN_NT-5.1 universi-c1eec2 1.7.0(0.218/5/3) 
      2009-12-04 17:08 i686 Cygwin
Machine Type: i686-pc-cygwin

Bash Version: 3.2
Patch Level: 49
Release Status: release

Description:

 This bug report against the Bash Reference Manual stems from a discussion 
 on bug-bash [1].

 The Bash Reference Manual's description of Shell Operation [2] omits 
 from its description of tokenization (Step 2) that the shell must 
 recognize expansion constructs.

 Step 2 says:

  [The shell] breaks the input into words and operators, obeying the 
  quoting rules described in Quoting. These tokens are separated by 
  metacharacters. Alias expansion is performed by this step (see 
  Aliases).

 Applying this tokenization description to a simple example:

  [me@host ~] $ echo The date is $(date +"%Y-%m-%d")

 would result in this list of tokens:

  -------     -------------
  echo        word
  <space>     metacharacter
  The         word
  <space>     metacharacter
  date        word
  <space>     metacharacter
  is          word
  <space>     metacharacter
  $           word
  (           metacharacter
  date        word
  <space>     metacharacter
  +"%Y-%m-%d" word
  )           metacharacter


 A reading of POSIX re Shell Token Recognition [3] indicates that shell 
 tokenization respects substitution candidates intact. The list of tokens 
 is the simple example then become:

  ------------------- -------------
  echo                word
  <space>             metacharacter
  The                 word
  <space>             metacharacter
  date                word
  <space>             metacharacter
  is                  word
  <space>             metacharacter
  $(date +"%Y-%m-%d") word

[1] http://thread.gmane.org/gmane.comp.shells.bash.bugs/14377
    or
    http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00119.html
    
[2] http://www.gnu.org/software/bash/manual/bashref.html#Shell-Operation

[3]
http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_03


Repeat-By:


Fix:

 I recommend that the first sentence of Step 2 be appended with the 
 following:

  "and keeping intact sequences of characters comprising expansions (see
   Shell Expansions)."

Allen
--
Allen Halsey






reply via email to

[Prev in Thread] Current Thread [Next in Thread]