Arrays (Bash): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Regel 60: | Regel 60: | ||
Dit werkt niet zomaar voor associate array: De loop gaat door alle elementen, en niet door alleen de rijen. | Dit werkt niet zomaar voor associate array: De loop gaat door alle elementen, en niet door alleen de rijen. | ||
+ | |||
+ | == Unset == | ||
+ | |||
+ | Gebruik het statement ''unset'' om een array te vernietigen: | ||
+ | |||
+ | <pre> | ||
+ | #1/bin/bash | ||
+ | |||
+ | |||
+ | # Create & fill an array | ||
+ | ######################################## | ||
+ | # | ||
+ | declare -A tr | ||
+ | |||
+ | echo "Newly created array: ${tr[@]}" | ||
+ | |||
+ | tr[1,1]="hoi"; tr[1,2]="doei" | ||
+ | |||
+ | echo ${tr[@]} | ||
+ | |||
+ | |||
+ | # Destroy array | ||
+ | ######################################## | ||
+ | # | ||
+ | unset tr | ||
+ | |||
+ | echo "Array after unset: ${tr[@]}" | ||
+ | </pre> | ||
+ | |||
+ | Uitvoer: | ||
+ | |||
+ | <pre> | ||
+ | Newly created array: | ||
+ | doei hoi | ||
+ | Redeclared array: | ||
+ | </pre> | ||
== Bronnen == | == Bronnen == |
Versie van 10 jun 2022 09:37
Beginnetje
#!/bin/bash a=(1 2 "Drie" 4 "Vijf") echo $a # Returns "1" - First item of the array echo $a[0] # Returns "1[0]" - The [0] part is treated as a literal echo ${a[0]} # Returns "1" echo ${a[@]} # Returns "1 2 3 4" - whole array
Nog een beginnetje:
a[0]="Nul" a[1]="Eén" echo $a # Toont alleen eerste element echo $a[0] # Output: Null[0] - Waarschijnlijk niet wat de bedoeling was echo ${a[1]} # OK
Multi-dimensional arrays
Bash ondersteunt geen multidimensionale arrays, maar je kunt een heel eind komen middels associative arrays
Associative arrays
- Associative arrays zijn arrays waarbij je elementen een eigen naam kunt geven. Je kunt ze daarnaast goed gebruiken voor multi-dimensionele arrays
- Associatieve arrays zijn nieuwe in Bash 4. Om te verifiëren welke versie van Bash je hebt:
bash --version
declare -A arr arr[0,0,0]="000" arr[0,0,1]="001" arr[0,1,0]="010" arr[0,1,1]="011" arr[1,0,0]="100" arr[1,0,1]="101" arr[1,1,0]="110" arr[1,1,1]="111" echo "${arr[0,0,0]} ${arr[0,0,1]} ${arr[0,1,0]} ${arr[0,1,1]}" echo "${arr[1,0,0]} ${arr[1,0,1]} ${arr[1,1,0]} ${arr[1,1,1]}"
Loop through array
Dit werkt. Merk op dat $i
de waarde van de cel bevat, niet de index:
array=( one two three ) for i in "${array[@]}" do echo "$i" done
Dit werkt niet zomaar voor associate array: De loop gaat door alle elementen, en niet door alleen de rijen.
Unset
Gebruik het statement unset om een array te vernietigen:
#1/bin/bash # Create & fill an array ######################################## # declare -A tr echo "Newly created array: ${tr[@]}" tr[1,1]="hoi"; tr[1,2]="doei" echo ${tr[@]} # Destroy array ######################################## # unset tr echo "Array after unset: ${tr[@]}"
Uitvoer:
Newly created array: doei hoi Redeclared array: