|
From: | John Kearney |
Subject: | Re: [Help-bash] getting weird output out of 'echo' w/args |
Date: | Thu, 30 May 2013 12:25:13 +0200 |
Changing the list to help-bash, I think this belongs here.
This is common misconception about filename expansion (globbing). Since globbing is done nearly always (*) people know only about "star" character. The fact is that "star", "question mark" and "opening bracket" (*, ?, [) all have special meaning for globbing. See http://www.gnu.org/software/bash/manual/bashref.html#Filename-Expansion
Many times I saw using tr like this:
somecommand | tr -s [a-z] ''
somecommand | tr -s [:space:] ' '
Please note that argument for tr undergo globbing (by bash), because it is not quoted.
RR
* It's not always, but it is good practise to double-quote variable expansions.
On 05/30/2013 10:56 AM, Chris Down wrote:
Pierre is referring to the fact that [i++] is evaluated as a glob by
the shell, the reason it doesn't work is because $i is postincremented
instead of preincremented. You can see what he means here:
$ shopt -u nullglob
$ i=0
$ while read a[++i]; do
echo "${a[i]}"hello
done <<< hello
$ shopt -s nullglob
$ while read a[++i]; do
echo "${a[i]}"
done <<< hello
$
On 30 May 2013 16:49, Davide Brini <address@hidden> wrote:
On Thu, 30 May 2013 08:53:48 +0300, Pierre Gaston <address@hidden>
wrote:
Missing quotes around [ ] can be nasty eg
#!/bin/bash
shopt -s nullglob # sounds a good idea!
.....
.....
i=0
while read a[i++]; do
echo "${a[i]}" # why oh why nothing is printed!
done <<< "hello"
It seems to me this has nothing to do with missing quotes around [ ], or I
don't get what you mean.
--
D.
[Prev in Thread] | Current Thread | [Next in Thread] |