Passer un argument en variable

Résolu
Bonjour,

J'ai un petit soucis avec un fichier .sh (#! /bin/bash)

Je cherche à faire passer un "argument" en variable :
J'ai dans un 1er temps listé les sous-dossiers existant dans le dossier actuel :

ls -d */
m'en liste un certain nombre (disons n). Je cherche à faire passer le i-eme en variable (disons MonDossierNumI)

J'ai donc pensé à :
MonDossierNum5=$(ls -d */ | awk '{print$5}')
pour m'afficher le 5e mais sans succès...

ls -d */ | awk '{print$1}'
affiche les résultats en colonne au lieu d'afficher le 1er argument

Quelqu'un aurait une petite idée?

Merci

6 réponses

  1. Contributeur
    hello
    récupérer la 5ème ligne, donc le 5ème fichier
    MonDossierNum5=$(ls -d */ | awk 'NR==5 {print}')
    1. Contributeur
      ls affiche les résultats sur 1 colonne lorsque la sortie est redirigée par > ou |
      voir l'option -C
      1. Contributeur
        oui

        $j n'est pas résolu entre ', on crée une variable awk:
        MonDossier=$(ls -d -1 */ | awk -v j=$j 'NR==j {print}')
        1. OK je comprends mieux pourquoi! D'ailleurs si j'ai bien compris, | awk '{print$1}' ne sert qu'à supprimer ce qu'il y a après le 1er espace ou tabulation, c'est çà?

          Sinon, le code marche nickel pour un chiffre, mais pas pour une variable comme ci-dessous... Tu as une idée?

          declare -i j
          
          MonDossier=$(ls -d -1 */ | awk 'NR==$j {print}')
          1. Cool çà marche!

            Un grand merci, j'aurais jamais pondu çà tout seul =)