Je souhaite créer un dictionnaire à Bash à partir d'un fichier texte qui ressemble à ceci: essentiellement je veux un dictionnaire comme ceci à partir de ce fichier j'ai créé le script suivant: p> Cependant, cela n'imprime pas fichier.txt code >: p>
a code >, plutôt il imprime
d code>. Pouvez-vous s'il vous plaît aider? P> p>
3 Réponses :
Ce que vous voulez faire est un tableau associatif tellement nommé. Et pour le déclarer, vous devez utiliser la commande:
declare -A dictionary
Les tableaux associatifs ( dictionnaires em> dans vos conditions) sont déclarés en utilisant et pour rendre ce script plus efficace, vous pouvez utiliser voir Manuel de référence Bash § 6.7 Tableaux . P> P> -A code>, pas
-A code>. Pour les références à indexées (celles déclarées avec
-A code>) Les éléments 'BASH effectue une expansion arithmétique sur l'indice (
$ clé code> H96400275 CODE> H96400275 CODE> Cas); donc vous écrivez fondamentalement l'écrasement
dictionnaire [0] code> sur et sur, puis demandant sa valeur; Ainsi,
d code> est imprimé.
lire code> en conjonction avec un
ifs personnalisé code> pour éviter < Code> Couper code> s. Par exemple: p>
C'est un autre bon moyen d'éviter les sous-espaces associés à l'appelant couper code>.
Le seul problème est que vous devez utiliser -a au lieu de -a
Étroitement lié: Stackoverflow.com/questions/38964946/...
Ne créez pas de sous-vase supplémentaire pour chaque appel à
Cut CODE> Utilisez simplement Paramètre Extransions i>
Key = "$ {line%% | *}" code> et < code> data = "$ {ligne # * |}" code> ou juste
dictionnaire [$ {(ligne%% | *}] = $ {line # * |} code> (après avoir réparer le < Code> -A code> à
-A code> problème)
Il y a plus d'une remarque sur ce post! Veuillez considérer Réponse de Smart Oguz Ismail