Pages : 1
#1 Le 02/09/2008, à 10:37
- DoDo69
[Résolu] problème script shell
Bonjour,
je voudrais écrire un petit script shell afin de créer automatiquement 10000 dossiers qui ont comme nom de 0 à 9999.
Pour celà j'ai écris ce code:
#! /bin/sh
i=0
while true
do
mkdir $i
i=$i+1
if ($i -eq 10000)
then
break;
fi
done
Il me crée bien mes 10000 dossiers, mais le problème s'est que les noms sont: 0 puis 0+1 puis 0+1+1 ...
Merci pour votre aide.
Dernière modification par DoDo69 (Le 03/09/2008, à 10:54)
Hors ligne
#2 Le 02/09/2008, à 10:43
- Totor
Re : [Résolu] problème script shell
Remplace i=$i+1 par let i=$i+1
sans compter que ceci est faux : if ($i -eq 10000)
EDIT 1 : En fait, remplace le tout par
i=0
while [ $i -ne 10000 ]
do
mkdir $i
let i=$i+1
done
EDIT 2 : où encore
for((i=0;i<10000;i++)); do mkdir $i; done
Dernière modification par Totor (Le 02/09/2008, à 10:50)
-- Lucid Lynx --
Hors ligne
#3 Le 02/09/2008, à 10:48
- DoDo69
Re : [Résolu] problème script shell
J'ai un problème, il y a un message qui me dit que let n'est pas reconnu donc il veut juste me créer le dossier 0
Hors ligne
#4 Le 02/09/2008, à 11:04
- Alain.g
Re : [Résolu] problème script shell
Bonjour
autre solution :
mkdir `seq 0 9999`
ou en bash (revient au même)
mkdir {0..9999}
Xubuntu Karmic !
Hors ligne
#5 Le 02/09/2008, à 11:07
- iuchiban
Re : [Résolu] problème script shell
c'est ton i=$i+1 qui va pas.
Arithmétique
Vous vous doutez bien qu'il est possible de faire des calculs avec le shell. En fait, le shell ne "sait" faire que des calculs sur les nombres entiers (ceux qui n'ont pas de virgules ;-). Pour faire un calcul il faut encadrer celui-ci de : $(( un calcul ))
i=$(($i+1))
Mais comme l'a suggérer Alain, y'a des méthodes plus rapides
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#6 Le 02/09/2008, à 12:32
- ®om
Re : [Résolu] problème script shell
Je t'avais répondu ici :
Remplace
$i+1
par
$(($i+1))
Et ne fais pas de boucle "while true" :
#! /bin/sh
i=0
while [ $i -lt 10000 ]
do
mkdir $i
i=$((i+1))
done
EDIT: sympa les méthodes d'Alain.g
Dernière modification par ®om (Le 02/09/2008, à 12:34)
Hors ligne
#7 Le 02/09/2008, à 13:06
- DoDo69
Re : [Résolu] problème script shell
Ok je ne pensais pas qu'il était possible de créer tous les dossiers avec une simple commande.
Merci à vous pour vos réponse.
EDIT: j'ai un petit problème avec la technique de Alain.g, en fait je souhaiterais créer des dossiers qui vont de 0000 à 9999 et en mettant:
mkdir {0000..9999}
Le nom des dossiers sont 0, 1, 2 ...
Dernière modification par DoDo69 (Le 02/09/2008, à 13:15)
Hors ligne
#8 Le 02/09/2008, à 13:21
- Alain.g
Re : [Résolu] problème script shell
en fait je souhaiterais créer des dossiers qui vont de 0000 à 9999
dans ce cas il faut utiliser seq avec l'option -w
mkdir `seq -w 0 9999`
Xubuntu Karmic !
Hors ligne
#9 Le 02/09/2008, à 13:23
- DoDo69
Re : [Résolu] problème script shell
Et bien encore une fois merci Alain.g
Et encore merci aussi aux autres, car les réponses pourront toujours me servir un jour
Hors ligne
#10 Le 02/09/2008, à 13:29
- iuchiban
Re : [Résolu] problème script shell
Idem.
Je fais pas mal de scripting au boulot, et ca peut toujours servir des commandes comme ça
par contre Alain, il me semble que la notation `<Commande>` devrait être remplacée par $(<Commande>).
Après c'est question d'habitude, et peut être que certains comportements changes comme la gestion des ", ', etc.
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#11 Le 02/09/2008, à 14:21
- enguerran
Re : [Résolu] problème script shell
Passe ton sujet en résolu
@ Alain.g : vraiment sympa tes deux propositions. Je ne connaissais pas vraiment la commande "seq", juste croisée dans des script par ci par là. Ça va changer ma vie ^^
Ubuntu Lucid (qui fonctionne au poil ^^)
Hors ligne
#12 Le 04/09/2008, à 17:24
- soupaloignon
Re : [Résolu] problème script shell
Merci pour cette astuce
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne