delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2019/02/21/11:10:16

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:subject:to:references:from:message-id:date
:mime-version:in-reply-to:content-type
:content-transfer-encoding; q=dns; s=default; b=Dh5dURKmxN/qTt6I
D+j1Dse9HiF+wy4wNeHwO5YzPT1c3/8E10tbnWvauQwzEZ0OBWXpbwYHAYz311bP
p7Mmlfawz3edjxD/gsre2GdGhE/P+zgBIfHi1vOlN+d+lzhq2TWThH2dwFy8KFPd
KynXgVDvyq95/K5KQn4CbNkuHrQ=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:subject:to:references:from:message-id:date
:mime-version:in-reply-to:content-type
:content-transfer-encoding; s=default; bh=x853XRh9Rzp7wlttAeICHA
SS1co=; b=vhVQ1V82fesV5T2BuILrubb9b1cRt8O/rTocp8rGA0nIrNBcdEiV0L
o1hrW9OJMxXLNnTEZD0RL8dHFkk+/va0rfs9Q+MzFDeZqpaaNTOvW+ZyP3Lt5ta2
iE0Xiho3iAr74u0Si3RhpDWAwF8OfMK1saHX091badGuaFESfedEU=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS autolearn=no version=3.3.2 spammy=A, a
X-HELO: mx1.redhat.com
Subject: Re: bash string-operator problem
To: cygwin AT cygwin DOT com
References: <d846545ebaa5469d90f01f84e4f48c3d AT vsrv060ex01 DOT ssd DOT fsi DOT com>
From: Eric Blake <eblake AT redhat DOT com>
Message-ID: <2d0a723d-05e8-84e8-8739-e461e6508e79@redhat.com>
Date: Thu, 21 Feb 2019 10:10:02 -0600
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0
MIME-Version: 1.0
In-Reply-To: <d846545ebaa5469d90f01f84e4f48c3d@vsrv060ex01.ssd.fsi.com>
X-IsSubscribed: yes

On 2/21/19 10:00 AM, Rockefeller, Harry wrote:
> CYGWIN_NT-6.1 HARRYR-PC 3.0.0(0.336/5/3) 2019-02-16 13:21 x86_64 Cygwin
> GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
> 
> #!/bin/bash
> A="A"
> B="A"
> if [ $A!=$B ]; then
>     echo -e "not identical"
> fi
> if [ $A==$B ]; then
>     echo -e "identical"
> fi
> exit 0
> 
> Running this script gives
> not identical
> identical
> 
> Both tests are true.

Well, yeah, but it's not a bug in bash, but in your script. Whitespace
for argument separation is essential in [.  You've provided exactly one
argument, and in one-argument mode, you are testing for non-empty
strings.  Since both strings "A!=B" and "A==B" are non-empty strings,
the if clause is taken both times.  You meant to provide three
arguments, and with proper quoting, and using the portable spelling of
equality (if you want to port your script to more than just bash):

[ "$A" != "$B" ]
[ "$A" = "$B" ]

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019