help-bash
[Top][All Lists]
Advanced

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

Re: whats wrong with (( a = 8 , a > 4 && a -= 2 || a-- )) , bash: ((: a


From: alex xmb ratchev
Subject: Re: whats wrong with (( a = 8 , a > 4 && a -= 2 || a-- )) , bash: ((: a = 8 , a > 4 && a -= 2 || a-- : attempted assignment to non-variable (error token is "-= 2 || a-- ")
Date: Thu, 23 Mar 2023 18:03:55 +0100

On Thu, Mar 23, 2023, 17:06 Bipul kumar <bipul.opensource@gmail.com> wrote:

> Let me explain here
> The -= operator performs a compound subtraction and assignment operation,
> which modifies the value of the variable on the left-hand side of the
> operator.
> Also it looks  within a logical expression like this a -= 2 , Bash does
> not allow any left side effects to occur.
> So in order to make it work as it insists bash to perform in an isolated
> subshell  only a - = 2  NO ANY OTHER LOGICAL EXPRESSION  Because it's a
> machine not human who sees from the eye. They work one instruction at a
> time with RULES, So you need to put inside parenthesis.
>

ill ( and ) my assignments in complex from now on
and btw yes no && more , for a ? b : c
there logical or bitwise or whatever && is the wrongest code mistake i v
seen
i dunno its math func either

And i don't think it's bug
>

i dunno ..

greets

    Respectfully,
>     Bipul
>     PUBLIC KEY <http://ix.io/1nWf>
>     97F0 2E08 7DE7 D538 BDFA  B708 86D8 BE27 8196 D466
>                     ** Please excuse brevity and typos. **
>
>
> On Thu, Mar 23, 2023 at 9:23 PM Bipul kumar <bipul.opensource@gmail.com>
> wrote:
>
>> Hi Alex,
>>
>> It's failing because, what you are doing is compound assignment
>>   a -= 2
>> which needs to be inside parentheses.
>> It works for me.
>>  (( a = 8 , a > 4 && (a -= 2) || a-- ))
>> $ echo $a
>> 6
>>
>> source https://www.gnu.org/software/bash/manual/bash.html    search
>> "compound assignment"
>>
>>     Respectfully,
>>     Bipul
>>     PUBLIC KEY <http://ix.io/1nWf>
>>     97F0 2E08 7DE7 D538 BDFA  B708 86D8 BE27 8196 D466
>>                     ** Please excuse brevity and typos. **
>>
>>
>> On Thu, Mar 23, 2023 at 4:03 PM alex xmb ratchev <fxmbsw7@gmail.com>
>> wrote:
>>
>>> i remember doing && (( code
>>> maybe i didnt '=' in action there
>>>
>>> (( a = 8 , a > 4 && a -= 2 || a-- ))
>>>
>>> bash: ((: a = 8 , a > 4 && a -= 2 || a-- : attempted assignment to
>>> non-variable (error token is "-= 2 || a-- ")
>>>
>>>
>>> (( a = 8 , a > 4 && a-- && a-- || a-- ))
>>>
>>> works
>>> a=6
>>>
>>> ..
>>> i suppose this is a (( lex bug where u didnt include || && in op for =
>>>
>>> is it ? :))
>>>
>>> greets
>>>
>>


reply via email to

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