8
votes

Comment initier l'élément de tableau à 0 en bash?

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?

0 commentaires

3 Réponses :


-1
votes

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


1 commentaires

"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.



18
votes

Votre exemple déclarera / initialiser une matrice vide.

Si vous souhaitez initialiser les membres du tableau, vous faites quelque chose comme ceci: p> xxx pré>

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) )


2 commentaires

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 unix.stackexchange.com/questions/7738/... L'autre problème possible est votre version de bash. Cette syntaxe a été ajoutée à Bash 3.0



2
votes

Les valeurs par défaut avec des tableaux associatifs

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}"


0 commentaires