help-bash
[Top][All Lists]
Advanced

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

Re: let vs double-parentheses


From: ikhxcsz7y xmbott
Subject: Re: let vs double-parentheses
Date: Sat, 6 Mar 2021 19:28:28 +0100

(( a = 1 , b = 2 , c = a + b ))

On Sat, Mar 6, 2021, 19:16 Koichi Murase <myoga.murase@gmail.com> wrote:

> 2021年3月7日(日) 1:43 Peng Yu <pengyu.ut@gmail.com>:
> > It is not clear what is the difference between let and
> > double-parentheses. Can they be used interchangeably? Or in some cases
> > that one can not replace the other?
>
> They are basically the same, but there can be a small usage difference
> coming from the syntactic difference between the normal command `let'
> and the construct `((...))': One can specify multiple arithmetic
> expressions to `let' but cannot specify them in `((...))'.
>
> - For example, `let a=1 b=2 c=3' cannot be replaced by `((a=1 b=2 c=3))'.
>
> - For another example, when one wants to process arguments as
> arithmetic expressions, one may write something like `let "$@"' using
> let. If one wants to do it with `((...))', one needs to combine it
> with a for loop as `for expr; do ((expr)); done'.
>
> - For a more practical example, when one wants to calculate
> 1+2+3+....+100, one can write `let a=0 a+={1..100}' using let, but
> need to write `a=0; for ((i=1;i<100;i++)); do ((a+=i)); done' using
> `((...))'.
>
> > Of the two, which one is
> > preferred? Thanks.
>
> I think `((...))' is more preferred for usual cases because it is free
> from some unwanted expansions like pathname expansions and word
> splitting in the arithmetic context.
>
> --
> Koichi
>
>


reply via email to

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