Code shell
Résolu/Fermé
diabloic
Messages postés
141
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
28 juillet 2014
-
Modifié par diabloic le 16/01/2013 à 16:33
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 17 janv. 2013 à 15:29
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 17 janv. 2013 à 15:29
A voir également:
- Code shell
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Code activation windows 10 - Guide
6 réponses
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 16/01/2013 à 17:07
Modifié par qqchquicommenceparQ le 16/01/2013 à 17:07
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?
diabloic
Messages postés
141
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
28 juillet 2014
5
16 janv. 2013 à 22:42
16 janv. 2013 à 22:42
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 ;)
++
Utilisateur anonyme
17 janv. 2013 à 00:47
17 janv. 2013 à 00:47
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.
diabloic
Messages postés
141
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
28 juillet 2014
5
17 janv. 2013 à 11:34
17 janv. 2013 à 11:34
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
Utilisateur anonyme
17 janv. 2013 à 12:37
17 janv. 2013 à 12:37
en sh, posix strict
for f in test/* do y=$(echo "$f" |sed -n 's/.*\([0-9]\):.*/\1/p') test -n "$y" && { test "$y" != "$x" && { x=$y for i in $(seq 1 6) do echo "eth$x:$i" done } } done
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
17 janv. 2013 à 15:29
17 janv. 2013 à 15:29
$ f="test1:2" $ echo "$f" | grep -o '\B[0-9]*' 1
;-))
diabloic
Messages postés
141
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
28 juillet 2014
5
Modifié par diabloic le 17/01/2013 à 13:33
Modifié par diabloic le 17/01/2013 à 13:33
Merci!! Je vais tester ça desuite.
Je venais de faire ça x=$(ls |grep -o -m 1 "[0-9]")
ça a l'air de fonctionner aussi.
Je venais de faire ça x=$(ls |grep -o -m 1 "[0-9]")
ça a l'air de fonctionner aussi.