64 votes

Comment ajouter un numéro de ligne pour la sortie, demander une ligne, puis agir en fonction de l'entrée ?

J'ai écrit un script shell comme celui-ci :

 #! /bin/sh
...
ls | grep "android"
...

et la sortie est :

 android1 
android2
xx_android
...

Je veux ajouter un numéro dans chaque fichier, comme ceci :

     1 android1 
    2 android2
    3 XX_android
    ...
    please choose your dir number:

puis attendez le numéro de ligne d'entrée utilisateur x, le script lit le numéro de ligne puis traite le répertoire correspondant. Comment pouvons-nous faire cela en shell ? Merci !

213voto

Traz Points 301

nl imprime les numéros de ligne :

 ls | grep android | nl

43voto

Karl Barker Points 3045

Si vous dirigez le résultat dans cat , vous pouvez utiliser l' -n pour numéroter chaque ligne comme suit :

 ls | grep "android" | cat -n

15voto

jweyrich Points 10002

Passez -n à grep , comme suit :

 ls | grep -n "android"

Depuis la page de manuel grep

  -n, --line-number
        Prefix each line of output with the line number within its input file.

13voto

kev Points 41855

Au lieu d'implémenter l'interaction, vous pouvez utiliser la commande intégrée select .

 select d in $(find . -type d -name '*android*'); do
    if [ -n "$d" ]; then
        # put your command here
        echo "$d selected"
    fi
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X