[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