bug-bash
[Top][All Lists]
Advanced

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

Re: -eq and strings


From: Greg Wooledge
Subject: Re: -eq and strings
Date: Mon, 6 Mar 2017 08:18:17 -0500
User-agent: Mutt/1.4.2.3i

On Sat, Mar 04, 2017 at 01:15:58PM +0100, Rob la Lau wrote:
> Looking a bit further: it doesn't do any comparison on the given strings:
> 
> $ [[ "x" -eq "y" ]] && echo "yes" || echo "no"
> yes

You're misunderstanding.  In a math context, which you are creating here
by using -eq, the word 'x' is interpreted as a variable name, which may
contain another variable name, and so on, until finally an integer is
discovered.  Same for the word 'y'.

> $ [[ "x" -eq "yz" ]] && echo "yes" || echo "no"
> yes

Same for the word 'yz'.

In your case, I suspect the variables x, y and yz are all undefined, which
means they evaluate to 0.

imadev:~$ unset x yz; if [[ x -eq yz ]]; then echo yes; else echo no; fi
yes
imadev:~$ x=3 yz=foo foo=3; if [[ x -eq yz ]]; then echo yes; else echo no; fi
yes
imadev:~$ x=3 yz=foo foo=2; if [[ x -eq yz ]]; then echo yes; else echo no; fi
no



reply via email to

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