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: Bipul kumar
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 22:35:46 +0530

I'm correcting here the term 'subshell' should not be employed to denote
parentheses.
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 10:34 PM alex xmb ratchev <fxmbsw7@gmail.com> wrote:

>
>
> 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]