help-bash
[Top][All Lists]
Advanced

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

Re: why fail , [[ $sep$*$sep == $sep--$sep ]]


From: Kerin Millar
Subject: Re: why fail , [[ $sep$*$sep == $sep--$sep ]]
Date: Sun, 18 Feb 2024 13:51:22 +0000

On Sun, 18 Feb 2024 14:34:43 +0100
alex xmb sw ratchev <fxmbsw7@gmail.com> wrote:

> On Sun, Feb 18, 2024, 14:18 Kerin Millar <kfm@plushkava.net> wrote:
> 
> > On Sat, 17 Feb 2024 17:01:13 +0100
> > alex xmb sw ratchev <fxmbsw7@gmail.com> wrote:
> >
> > > oh i know why it failed
> > > set interprets the first -- away
> >
> > That is not why it is failing to behave as you expect. Rather, the issue
> > is that your conditional expression is incorrect. It should be [[ "$f$*$f"
> > == *"$f--$f"* ]]. Note that you have chosen to change the value of IFS. It
> > is important that you do not omit the quotes - not even for the left hand
> > side of the expression!
> >
> 
> i thought there is a ' flat left side of == '

Unfortunately, the raw output of xtrace is not much use for human eyeballs. 
Here's the exact difference.

$ ( set aa bb cc -- dd; f=$'\1' IFS=$f PS4= BASH_XTRACEFD=1; set -x; [[ 
"$f$*$f" == *"$f--$f"* ]] ) | hexdump -C
00000000  5b 5b 20 01 61 61 01 62  62 01 63 63 01 2d 2d 01  |[[ .aa.bb.cc.--.|
00000010  64 64 01 20 3d 3d 20 2a  01 5c 2d 5c 2d 01 2a 20  |dd. == *.\-\-.* |
00000020  5d 5d 0a                                          |]].|

$ ( set aa bb cc -- dd; f=$'\1' IFS=$f PS4= BASH_XTRACEFD=1; set -x; [[ $f$*$f 
== *"$f--$f"* ]] ) | hexdump -C
00000000  5b 5b 20 61 61 62 62 63  63 2d 2d 64 64 20 3d 3d  |[[ aabbcc--dd ==|
00000010  20 2a 01 5c 2d 5c 2d 01  2a 20 5d 5d 0a           | *.\-\-.* ]].|

Of course, you needed the asterisk characters in the pattern too.

-- 
Kerin Millar



reply via email to

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