[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