[linux] $[ 3 * 3 ] en $(( 3 * 3 ))
Daniel C. von Asmuth
asmuth op vonasmuth.nl
Za Jul 1 15:13:21 CEST 2023
Aldus schreef Guus Snijders via Linux op Sat, Jul 01, 2023 at 01:07:40PM +0200:
> Op vr 30 jun. 2023 21:30 schreef Geert Stappers via Linux
> <[1]linux op lists.nllgg.nl>:
>
> Hoi,
>
> Mocht ik in "shell" moeten rekenen, dan gebruik ik $[ ]
> voorbeeld
> UUR=$[60 * 60]
>
> Nu kwam ik $(( )) als berekening tegen.
>
> Een testje gedaan.
>
> echo $[ 3 * 3 ]
> echo $(( 3 * 3 ))
>
> Beide geven 9 als antwoord.
>
> Wat is er aan verschil?
> Wanneer de ene gebruiken, wanneer de andere?
Er zijn nog meer opties.
Doe bijvoorbeeld
$ declare -i a b
$ let a=3
$ let b=a\*a
$ echo $b
9 # Dat wist Pippi Langkous ook al.
$ let b=1
$ (( b = a * a )) # dit is gewone Bash arithmetic
$ echo $b
9
$ [ b == a ] # de ingebouwde vergelijkingsoperatie
$ echo $?
1 # 1 staat voor 'false', 0 voor 'true'
$ [[ b == a ]] # iets vergelijkbaars
$ echo $?
1
# Voor het verschil, zie https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash
let b=1
$ echo $[ b = a * a ] # toekenning aan b als neveneffect
9
$ echo $b
9
$ $[ b = a * a ]
bash: 9: command not found
# Zie ook: https://superuser.com/questions/1533900/difference-between-and-or-and-in-bash
$ let b=1
$ echo $(( b = a * a )) # dit is een expressie, i.p.v. een commando
9
$ echo $b
9
# Zie ook: https://ryanstutorials.net/bash-scripting-tutorial/bash-arithmetic.php
Met vriendelijke groet,
Daniel von Asmuth
--
How long it takes to reach your goal
depends less on your speed than on your direction.
Meer informatie over de Linux
maillijst