declare -a MY_ARRAY=() Does the declaration of array in this way in bash will initiate all the array elements to 0?If not, How to initiate array element to 0?
3 Réponses :
Oui, il initie un tableau vide et l'attribue à my_array code>. Vous pouvez vérifier avec quelque chose comme ceci:
#!/bin/bash
declare -a MY_ARRAY=()
echo ${#MY_ARRAY} # this prints out the length of the array
"La déclaration de tableau de cette manière à Bash va-t-elle initier tous les éléments de la matrice à 0?" , Votre réponse: "Oui, il initie un tableau vide". Cela n'a pas de sens. Ensuite, vous montrez comment afficher la longueur d'un tableau. Vous avez mal interprété la question que je pense.
Votre exemple déclarera / initialiser une matrice vide.
Si vous souhaitez initialiser les membres du tableau, vous faites quelque chose comme ceci: p> Si vous souhaitez initialiser Un tableau avec 100 membres, vous pouvez le faire: P> declare -a MY_ARRAY=( $(for i in {1..100}; do echo 0; done) )
La solution ne fonctionne pas pour moi, mais celle-ci fonctionne bien pour moi: déclarer -a job1ids = ($ ($ ($ ($-1 $ cvfolds); faire écho 0; fait))
@ Goodwill utilisant des variables au lieu de chiffres pour définir les limites de la plage n'est pas prise en charge (développée) dans Bash, c'est pourquoi votre tentative a probablement échoué. Voir
BASH ne sont pas des tableaux de longueur fixe, vous ne pouvez donc pas pré-initialiser tous les éléments. Les matrices indexées ne sont pas non plus rares, vous ne pouvez donc pas vraiment utiliser les valeurs par défaut comme vous pensez. P>
Cependant, vous pouvez utiliser des tableaux associatifs avec une expansion pour les valeurs manquantes. Par exemple: p> echo "${foo[bar]:=baz}"