3 votes

J'ai essayé d'utiliser les tableaux de bash, mais pour une raison quelconque, cela échoue ?

J'essaie de faire un script qui devrait être exécuté avec crontab, mais j'ai des difficultés à déclarer un tableau et à récupérer la clé et la valeur de ce tableau. (Sous MacOS 10.12.6)

Voici ce que j'ai obtenu jusqu'à présent :

#!/bin/bash

declare -A listofnames

listofnames[one]="one test"
listofnames[two]="two test"

for val in "${listofnames[@]}"; do
    echo $val
done

Et cela me lance une erreur : declare: usage: declare [-afFirtx] [-p] [name[=value] ...] et la sortie qu'il two test .

Sortie attendue :

$ ./test.sh
one test
two test

0 votes

Allez, tout le monde ne rétrogradez pas sans explication.

1 votes

MacOS est livré avec la version 3 de bash (pour des raisons de licence), mais les tableaux associatifs n'ont pas été ajoutés à bash avant la version 4. Si vous ne pouvez pas faire ce dont vous avez besoin avec des tableaux indexés numériquement, votre meilleur choix serait d'installer bash v4 avec maison puis modifiez la ligne shebang pour l'utiliser à la place de la version intégrée.

0 votes

Quelle version de MacOS utilisez-vous ?

2voto

Douglas Points 10417

Il n'est pas nécessaire de déclarer votre tableau à l'avance, mais si vous le faites, vous devez utiliser le "a" minuscule, et non la majuscule.

declare -a listofnames

Deuxièmement, vous devez utiliser des indicatifs numériques lorsque vous faites référence à un élément de tableau

listofnames[one] <----- incorrect
listofnames[1]   <----- correct

Ainsi, pour vos deux éléments, cela devrait ressembler à ceci :

listofnames[1]="one test"
listofnames[2]="two test"

Ou vous assignez toutes les valeurs en une seule fois, en prenant soin que le premier élément ait l'index 0.

listofnames=("", "one test", "two test)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X