|
From: | Roman Rakus |
Subject: | Re: [Help-bash] getting weird output out of 'echo' w/args |
Date: | Thu, 30 May 2013 11:15:20 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 |
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]; doecho "${a[i]}" done <<< hellohello $ shopt -s nullglob $ while read a[++i]; doecho "${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] |