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

A voir également:

6 réponses

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

C'est parfait !

Merci beaucoup dubcek!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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