Comment pourrais-je lire les entrées utilisateur sous forme de tableau dans le bash
shell?
command-line
bash
moata_u
la source
la source
cat war_and_peace.txt | ./array_test.sh
../array_test.sh < war_and_peace.txt
.Réponses:
Voici une façon de procéder:
Si vous venez de l'exécuter, il continuera à lire à partir de l'entrée standard jusqu'à ce que vous appuyiez sur Ctrl + D (EOF). Ensuite, les lignes que vous avez saisies seront dans
my_array
. Certains peuvent trouver ce code déroutant. Le corps de la boucle dit essentiellementmy_array = my_array + element
.Quelques documents intéressants:
Le Guide avancé de Bash-Scripting a un grand chapitre sur les tableaux
La page de manuel de la lecture intégrée
15 exemples de tableaux de thegeekstuff.com
la source
read -r
est assez utile / important parfois ... Le lien de Stefano vers la "lecture de la page de manuel intégrée" explique son but ... (pour empêcher une interprétation barre oblique inverse).Lisez-le en utilisant ceci:
Et pour l'impression, utilisez:
la source
Et celui qui ne recrée pas le tableau à chaque fois (mais nécessite bash 3.1 ou plus récent):
Voir http://mywiki.wooledge.org/BashFAQ/001 pour en savoir plus.
Et comme toujours, pour éviter d'écrire des bogues, lisez http://mywiki.wooledge.org/BashGuide et évitez les guides tldp comme le guide de script Advanced bash.
la source
IFS
problème. Sans l'annuler, 'read' sripts tous les espaces blancs avant et arrière ... et bien sûr-r
aussi ...Que diriez-vous de ce one-liner;)
Éditer:
Dans
bash
,est la façon d' affecter à un tableau . En l'utilisant conjointement avec la substitution de commandes, vous pouvez lire des tableaux à partir du pipeline, ce qui n'est pas possible d'utiliser
read
pour accomplir cela de manière simple:Vous constaterez qu'il ne produit rien du fait qu'il
read
ne fait rien quandstdin
est un tuyau car un pipeline peut être exécuté dans un sous-shell de sorte que la variable peut ne pas être utilisable du tout.En utilisant la manière suggérée par cette réponse:
Il donne
a b
ce qui est beaucoup plus simple et plus simple que toute solution de contournement donnée par les réponses des valeurs de lecture dans une variable shell à partir d'un tuyau et en lecture bash après qu'un tuyau ne définit pas de valeurs .la source