Code shell
Résolu
diabloic
Messages postés
141
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
ça faisait longtemps que je n'étais pas venu, sympas le nouveau forum ;).
J'ai besoin d'aide sur un bout de code, je pense que pour vous cela va être facile.
ex :
################
/ccm/test> ls
toto
tatatiti
testtest
test2
test1:2
test1:3
test1:4
################
Je voudrais parcourir le dossier "test" et récupérer le preimier chiffre (soit 1 dans cette exemple) dans une variable.
#/bin/sh
###je récupère le chiffre 1 dans la variable $x par exemple (correspondant à test1:... ==> je voudrais de l'aide sur ça...
for i in 6
do
#Pour utiliser $x comme ça plus tard
... eth$x:$i
done
Merci d'avance pour votre aide.
++
ça faisait longtemps que je n'étais pas venu, sympas le nouveau forum ;).
J'ai besoin d'aide sur un bout de code, je pense que pour vous cela va être facile.
ex :
################
/ccm/test> ls
toto
tatatiti
testtest
test2
test1:2
test1:3
test1:4
################
Je voudrais parcourir le dossier "test" et récupérer le preimier chiffre (soit 1 dans cette exemple) dans une variable.
#/bin/sh
###je récupère le chiffre 1 dans la variable $x par exemple (correspondant à test1:... ==> je voudrais de l'aide sur ça...
for i in 6
do
#Pour utiliser $x comme ça plus tard
... eth$x:$i
done
Merci d'avance pour votre aide.
++
A voir également:
- Code shell
- Code ascii - Guide
- Classic shell - Télécharger - Personnalisation
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
6 réponses
salut,
Ce n'est pas très clair.
parcourir le dossier "test" :
récupérer le preimier chiffre (soit 1 dans cette exemple)
donc il faut s'occuper uniquement des fichiers qui ont le format suivant:
[[:alpha:]]*[[:digit:]]:[[:digit:]]
?
et ne récupérer que le premier chiffre (entre les lettres et le deux-points)?
On peut faire ça en bash, ou est-ce que ça doit être 100% portable?
Ce n'est pas très clair.
parcourir le dossier "test" :
for f in test/*; do echo "$f"; done
récupérer le preimier chiffre (soit 1 dans cette exemple)
donc il faut s'occuper uniquement des fichiers qui ont le format suivant:
[[:alpha:]]*[[:digit:]]:[[:digit:]]
?
et ne récupérer que le premier chiffre (entre les lettres et le deux-points)?
On peut faire ça en bash, ou est-ce que ça doit être 100% portable?
Bonjour,
merci pour ta réponse et dsl pour le manque de clarté! Tu m'as quand même compris!
=>J'aimerais parcourir le dossier "test" pour s'occuper uniquement des fichiers qui ont le format [[:alpha:]]*[[:digit1:]]:[[:digit2:]].
=> oui récupérer digit1.
J'aimerais qu'il soit en .sh pour l'exécuter facilement car je vais m'en servir pour tester des processus.
Si quelqu'un arrive a m'aider pour ça, je vais récupérer ce chiffre dans la variable $x par exemple et faire un truc du genre :
for i in 6
do
#Pour utiliser $x comme ça plus tard
... eth$x:$i
done
Comme ça je vais pouvoir effectuer des actions sur les interfaces eth$x:$i
J'espère que j'ai été plus clair.
Merci ;)
++
merci pour ta réponse et dsl pour le manque de clarté! Tu m'as quand même compris!
=>J'aimerais parcourir le dossier "test" pour s'occuper uniquement des fichiers qui ont le format [[:alpha:]]*[[:digit1:]]:[[:digit2:]].
=> oui récupérer digit1.
J'aimerais qu'il soit en .sh pour l'exécuter facilement car je vais m'en servir pour tester des processus.
Si quelqu'un arrive a m'aider pour ça, je vais récupérer ce chiffre dans la variable $x par exemple et faire un truc du genre :
for i in 6
do
#Pour utiliser $x comme ça plus tard
... eth$x:$i
done
Comme ça je vais pouvoir effectuer des actions sur les interfaces eth$x:$i
J'espère que j'ai été plus clair.
Merci ;)
++
C'est quoi ce 6 ?
for est censé boucler sur une liste, mais 6 n'est pas une liste.
Ça reste un peu flou
Si on reprend ton répertoire test
Ensuite? Ici, il n'y a que des 1. Admettons qu'à la place d'un echo, on utilise un for...
Il va falloir utiliser sed pour extraire ce nombre, et l'assigner à x.
Tu veux répéter les opérations autant de fois qu'il y a de fichiers qui correspondent ?
Donc on assigne x, et si x change, alors on assigne x à la nouvelle valeur, et on effectue les opérations.
for est censé boucler sur une liste, mais 6 n'est pas une liste.
Ça reste un peu flou
Si on reprend ton répertoire test
$ cd test $ echo *[0-9]:[0-9] test1:2 test1:3 test1:4Voilà, ça affiche la liste des fichiers correspondant à peu près au motif que j'ai décrit plus haut.
Ensuite? Ici, il n'y a que des 1. Admettons qu'à la place d'un echo, on utilise un for...
Il va falloir utiliser sed pour extraire ce nombre, et l'assigner à x.
Tu veux répéter les opérations autant de fois qu'il y a de fichiers qui correspondent ?
Donc on assigne x, et si x change, alors on assigne x à la nouvelle valeur, et on effectue les opérations.
1=>Le 6 c'était pour restarter 6 interfaces réseaux par exemple :
restart eth[digit1]:[1 à 6].
2=>Normalement dans ce dossier, si tu récupère le digit1 sur un élément qui a matché c'est bon tu arrêter car les autres auront le même digit1.
3=>Et puis mois une fois que la valeur est extraite je pourrai m'en servir pour faire l'étape 1.
Est ce plus clair?
Merci encore
restart eth[digit1]:[1 à 6].
2=>Normalement dans ce dossier, si tu récupère le digit1 sur un élément qui a matché c'est bon tu arrêter car les autres auront le même digit1.
3=>Et puis mois une fois que la valeur est extraite je pourrai m'en servir pour faire l'étape 1.
Est ce plus clair?
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question