Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.os.linux.misc > #35742

Re: correct quoting for variables in bash scripts?

From Ralf Fassel <ralfixx@gmx.de>
Newsgroups comp.os.linux.misc
Subject Re: correct quoting for variables in bash scripts?
Date 2022-10-18 15:01 +0200
Message-ID <ygaedv58ewi.fsf@akutech.de> (permalink)
References <tije9a$19dt$1@gioia.aioe.org> <eli$2210171923@qaz.wtf> <ygailkh8om8.fsf@akutech.de> <tim4kr$3nq91$1@dont-email.me>

Show all headers | View raw


* Rich <rich@example.invalid>
| Ralf Fassel <ralfixx@gmx.de> wrote:
| > | The two [[ ]] square bracket form of the test command is explicitly a
| > | shell built-in, so it can recognize empty strings without help.
| > 
| > Interesting, didn't know that difference:
| > 
| >    $ unset bar
| >    $ [[ $bar = x ]] && echo yes
| >    $ type [[
| >    [[ is a shell keyword
| >    
| >    $ [ $bar = x ] && echo yes
| >    bash: [: =: unary operator expected
| >    $ type [
| >    [ is a shell builtin
| > 
| > Most probably the error thrown with "[" is to ensure compatibility with
| > /usr/bin/test?
>
| The error thrown with "[" is because what "[" sees as its argv is "= x" 
| because the shell has already converted $bar into "" before "[" is 
| executed.

I understand the problem for the case that there is a command to be
called after variable substitution.

But the original theory (first quotation above) why [[ did not throw an
error was that "... ([[) is explicitly a shell built-in, so it can
recognize empty strings without help."

Since '[' is also flagged as a shell-builtin by bash itself ("type [ =>
shell builtin"), I wondered "can't it detect it then just the same?"

There seems to be a difference between shell-keywords here and
shell-builtins when it comes to the handling of empty variables.

(Of course there is also /usr/bin/[ and /usr/bin/test (2 different
programs on my Opensuse) but I suppose that these are not called 
when "[" is a shell-builtin.)

R'

Back to comp.os.linux.misc | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

correct quoting for variables in bash scripts? Barry Stir <scooter@mealteam6.mil> - 2022-10-17 19:28 +0800
  Re: correct quoting for variables in bash scripts? Aragorn <telcontar@duck.com> - 2022-10-17 14:10 +0200
  Re: correct quoting for variables in bash scripts? Ralf Fassel <ralfixx@gmx.de> - 2022-10-17 14:15 +0200
    Re: correct quoting for variables in bash scripts? Jerry Peters <jerry@example.invalid> - 2022-11-01 20:27 +0000
  Re: correct quoting for variables in bash scripts? "Carlos E. R." <robin_listas@es.invalid> - 2022-10-17 14:39 +0200
  Re: correct quoting for variables in bash scripts? Rich <rich@example.invalid> - 2022-10-17 14:02 +0000
  Re: correct quoting for variables in bash scripts? Henning Hucke <h_hucke+spam.news@newsmail.aeon.icebear.org> - 2022-10-17 13:54 +0000
  Re: correct quoting for variables in bash scripts? Eli the Bearded <*@eli.users.panix.com> - 2022-10-17 23:35 +0000
    Re: correct quoting for variables in bash scripts? Ralf Fassel <ralfixx@gmx.de> - 2022-10-18 11:31 +0200
      Re: correct quoting for variables in bash scripts? Rich <rich@example.invalid> - 2022-10-18 12:02 +0000
        Re: correct quoting for variables in bash scripts? Ralf Fassel <ralfixx@gmx.de> - 2022-10-18 15:01 +0200
          Re: correct quoting for variables in bash scripts? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2022-10-18 14:17 +0000
            The difference between /bin/test and /bin/[ Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2022-10-18 14:58 +0000
              Re: The difference between /bin/test and /bin/[ Eli the Bearded <*@eli.users.panix.com> - 2022-10-21 04:41 +0000
            Re: correct quoting for variables in bash scripts? Ralf Fassel <ralfixx@gmx.de> - 2022-10-19 12:04 +0200

csiph-web