Passer un argument en variable

Résolu
sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    récupérer la 5ème ligne, donc le 5ème fichier
    MonDossierNum5=$(ls -d */ | awk 'NR==5 {print}')
    1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ls affiche les résultats sur 1 colonne lorsque la sortie est redirigée par > ou |
    voir l'option -C
    1
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  4. sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
     
    Salut,

    C'est parfait !

    Merci beaucoup dubcek!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
     
    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}')
    0
  7. sym59 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
     
    Cool çà marche!

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