Re: docs incorrectly mention pattern matching works like pathname expansion

2018-03-15 Thread Stormy
Thanks for the reply.  I'm not sure we are talking about the same thing.. 
maybe..does this example help?
# case /test/test2/dir1/file in  /test/*) echo 'match';; *) echo 'nomatch';; 
esac
match

here, the expectation is to NOT match, since '/test/*' in normal shell, i.e. 
"ls", would NOT match that long path.  by path name expansion, man page is 
hinting it behaves like "ls", but clearly it does not.
in summary, it seems bash has no internal fnmatch(3) implementation.
 

On Thursday, March 15, 2018, 5:26:32 PM GMT+2, Chet Ramey 
 wrote:  
 
 On 3/14/18 1:43 PM, Stormy wrote:

> Bash Version: 4.2
> Patch Level: 46
> Release Status: release
> 
> Description:
>  Section of 'case' in bash's man page says:
> 
>  case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
>   A  case  command  first expands word, and tries to match it 
> against each pattern in turn, using the same matching
>   rules as for pathname expansion (see Pathname Expansion below).
> 
> but that is not correct, the matching here does NOT follow pathname 
> expansion, the treatment of "/" is not the same.

The description of Pathname Expansion says, in part:

"When matching a
pathname, the slash character must always be matched explicitly."

but I can expand that to also say that it other contexts it does not need
to be.


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
        ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    c...@case.edu    http://tiswww.cwru.edu/~chet/
  


Re: docs incorrectly mention pattern matching works like pathname expansion

2018-03-15 Thread Stormy
ok, thanks for the confirmation.  now u see what I meant before.. when saying 
bash does not have a builtin way to call fnmatch (I meant: for path name 
matching), clearly bash calls fnmatch, that is obvious, but there is no way to 
make it do pathname matching internally. (cd, ls, will surely do it, external 
to bash though)..

anyways, thanks for all the help..
 

On Thursday, March 15, 2018, 9:44:38 PM GMT+2, Chet Ramey 
 wrote:  
 
 On 3/15/18 3:26 PM, Stormy wrote:

> like I said, I've already implemented, roughly 40 lines in bash, and it
> seems to work, but if there is some builtin option 'shopt' or similar that
> can turn the right flags you mentioned, I'm all for testing it :)

There isn't. Pathname expansion is done in the specific circumstances Posix
says it should be (and historical shells perform). The other contexts use
straight pattern matching.


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
        ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    c...@case.edu    http://tiswww.cwru.edu/~chet/