Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 hmm

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 big_smile


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 smile

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. smile

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

DoDo69 a écrit :

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 big_smile

Et encore merci aussi aux autres, car les réponses pourront toujours me servir un jour wink

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 big_smile

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. big_smile


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 tongue

@ 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