Passer un argument en variable

Résolu/Fermé
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 5 sept. 2013 à 17:42
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 6 sept. 2013 à 15:51
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 sept. 2013 à 08:01
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 sept. 2013 à 10:23
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 sept. 2013 à 14:44
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 jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015
6 sept. 2013 à 10:05
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 jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015
6 sept. 2013 à 14:31
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 jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015
6 sept. 2013 à 15:51
Cool çà marche!

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