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 19/08/2007, à 18:56

jeanr

Mon premier script !!

Bonjour à tous,

Ci-dessous mon premier script après "hello world" et ce que cela a donné : pas brillant !

Merci pour votre aide et vos suggestions !

JeanR

#!/bin/bash



#   Change chaque nom de fichier en minuscules (pas seulement!) dans le répertoire courant.

#

#  Inspiré par un script de John Dubois,

#+    qui fut traduit en Bash par Chet Ramey,

#+    et considérablement simplifié par l'auteur du guide ABS Mendel Cooper.
#
#  Enfin retravaillé par moi yeahhh :-) !



for nomfichier in * # Parcourt tous les fichiers du répertoire.

do

    nomF=`basename $nomfichier`
    # "tr '[:upper:]' '[:lower:]'" réalise une conversion en minuscule.

    # "tr '[:space:]' _" change les espaces blancs par des _.

    # "tr -cs '[:alpha:]' Z" change les caractères non alphabétiques en Z.

    #+ et ne conserve qu'un seul Z pour les Z successifs.

    n=`echo $nomF | tr '[:upper:]' '[:lower:]' | tr '[:space:]' _ | tr -cs '[:alpha:]' Z |`

    if [ "$nomF" != "$n" ] # Change les seuls fichiers dont les noms ont été changé

    then

        mv $nomF $n

    fi

done



exit $?



=================================

jean@FamilleRouche:~/Astronomie$ ~/Scripts/cvt_lower.sh
: Aucun fichier ou répertoire de ce type #!/bin/bash
: commande introuvablelower.sh: line 2:
: commande introuvablelower.sh: line 10:
' inattenduScripts/cvt_lower.sh: line 12: erreur de syntaxe près du jeton `do
'home/jean/Scripts/cvt_lower.sh: line 12: `do

Hors ligne

#2 Le 19/08/2007, à 19:16

alexduf

Re : Mon premier script !!

les erreurs que tu nous montres sont bien celle de ce fichier ? ~/Scripts/cvt_lower.sh

parce que ca me parait complètement abracadabrantesque comme erreurs oO

Dernière modification par alexduf (Le 19/08/2007, à 19:18)

Hors ligne

#3 Le 19/08/2007, à 19:32

jeanr

Re : Mon premier script !!

Re-bonsoir,

Et la réponse est oui ! Le script est bien " cvt_lower.sh " dans le répertoire " ~/Scripts "

Et faut-il le dire, l'utilisateur quinqua lambda reste sur sa "fin"... heuuhhh "faim" !

Bonne soirée et merci d'avance !

Jean

Hors ligne

#4 Le 19/08/2007, à 20:12

JoelS

Re : Mon premier script !!

jeanr a écrit :

Ci-dessous mon premier script après "hello world" et ce que cela a donné : pas brillant !
Merci pour votre aide et vos suggestions !

Bonjour,

je pense que ton problème est comme la vérité, c'est à dire ailleurs !!! Déjà à cause de ça:

jeanr a écrit :

jean@FamilleRouche:~/Astronomie$ ~/Scripts/cvt_lower.sh
: Aucun fichier ou répertoire de ce type #!/bin/bash
: commande introuvablelower.sh: line 2:
: commande introuvablelower.sh: line 10:
' inattenduScripts/cvt_lower.sh: line 12: erreur de syntaxe près du jeton `do
'home/jean/Scripts/cvt_lower.sh: line 12: `do

Tu vois la différence entre les lignes de sortie 1, 2, 3 et les 4 et 5 ? Le message d'erreur typique est de la forme

<nom du script>:line NN:<message d'erreur>

Or ce n'est pas le cas.

Peux tu re-poster à la fois ton script et la sortie dans une balise Code en faisant un coîer/coller ?

Hors ligne

#5 Le 19/08/2007, à 20:26

jeanr

Re : Mon premier script !!

Et re-bonsoir, avec plaisir :

#!/bin/bash

#   Change chaque nom de fichier en minuscules dans le répertoire courant.
# 
#  Inspiré par un script de John Dubois,
#+    qui fut traduit en Bash par Chet Ramey,
#+    et considérablement simplifié par l'auteur du guide ABS Mendel Cooper.
#
#  Enfin retravaillé par moi !

for nomfichier in * # Parcourt tous les fichiers du répertoire.

do

	nomF=`basename $nomfichier`

	# "tr '[:upper:]' '[:lower:]'" réalise une conversion en minuscule.
	# "tr '[:space:]' _" change les espaces blancs par des _.
	# "tr -cs '[:alpha:]' Z" change les caractères non alphabétiques en Z.
	#+ et ne conserve qu'un seul Z pour les Z successifs.

	n=`echo $nomF | tr '[:upper:]' '[:lower:]' | tr '[:space:]' _ | tr -cs '[:alpha:]' Z |`

	if [ "$nomF" != "$n" ] # Change les seuls fichiers dont les noms ont été changé

	then

		mv $nomF $n

	fi

done



exit $?
jean@FamilleRouche:~/Astronomie$ ~/Scripts/cvt_lower.sh
: Aucun fichier ou répertoire de ce type #!/bin/bash
 : commande introuvablelower.sh: line 2: 
 : commande introuvablelower.sh: line 10: 
' inattenduScripts/cvt_lower.sh: line 12: erreur de syntaxe près du jeton `do
'home/jean/Scripts/cvt_lower.sh: line 12: `do

Voici, j'espère que cela pourra vous être utile et comme demain matin je suis sensé être à 7h au boulot... ça va être dodo dans l'heure qui vient, merci beaucoup et à demain,

JeanR

Hors ligne

#6 Le 19/08/2007, à 21:26

lunique

Re : Mon premier script !!

Je sais que sa va paraitre tres tres con comme question, mais vu le message d'erreur, tu es sur d'avoir l'interpreteur bash d'installé dans /bin/bash ?

Hors ligne

#7 Le 19/08/2007, à 21:28

pacome

Re : Mon premier script !!

Salut,

Comme les lignes signalées en erreurs sont des lignes vides, je me demande s'il ne s'agit pas en fait de 'line feed' (^M, en général ça vient d'un éditeur windows)...

Chez moi en tout cas le script coince à la ligne 23, en fait  22, à cause du "| tout seul à la fin de la commande.
Si tu l'enlève ça fonctionne et il renomme les fichiers du répertoire, mais je ne sais pas si le résultat sera tel que tu l'attends... je te conseille de remplacer la commande mv par echo, pour voir ce que ça donne, ou de ne l'executer que dans un répertoire de travail ne contenant que des fichiers de tests.

A+

Hors ligne

#8 Le 19/08/2007, à 21:51

alexduf

Re : Mon premier script !!

pacome a écrit :

Comme les lignes signalées en erreurs sont des lignes vides, je me demande s'il ne s'agit pas en fait de 'line feed' (^M, en général ça vient d'un éditeur windows)...

Très bonne remarque...
Si c'est le cas, un coup de la commande dos2unix sur ton script devrais résoudre le problème !

si tu n'as pas la commande dos2unix, un coup de

sudo apt-get install sysutils

devrais l'installer

Hors ligne

#9 Le 20/08/2007, à 07:29

jeanr

Re : Mon premier script !!

Bonjour à tous,

Oui, oui... je devais être du côté faible de la force (wdw) quand j'ai fait quelques "copier et coller" dans un document "notepad"... à partir de bonnes idées trouvées sur internet.

Grrr... Il me faut virer ce dual boot que je gardais parce que, parce que... pour quelle raison au juste ? Bien fait pour moi...  Ce soir, je m'y remets !

Merci beaucoup, je vous tiens au courant !

JeanR

Hors ligne

#10 Le 20/08/2007, à 19:58

jeanr

Re : Mon premier script !!

Bonsoir à tous !

Cela progresse : quitté la maison à 6h30, retour du boulot à 19h... juste un petit essai mais le quinqua lambda est fatigué...

A demain !

jean@FamilleRouche:~$ cd ~/TestAstro
jean@FamilleRouche:~/TestAstro$ ~/Scripts/cvt_lower.sh
/home/jean/Scripts/cvt_lower.sh: line 1: #!/bin/bash: Aucun fichier ou répertoire de ce type
/home/jean/Scripts/cvt_lower.sh: command substitution: line 18: erreur de syntaxe : fin de fichier inattendue
mv: opérande du fichier cible manquant après `04sc2_fr.pdf'
Pour en savoir davantage, faites: « mv --help ».
basename: opérande surnuméraire `bestelling'
Pour en savoir davantage, faites: « basename --help ».
/home/jean/Scripts/cvt_lower.sh: command substitution: line 18: erreur de syntaxe : fin de fichier inattendue
basename: opérande surnuméraire `Solar'
Pour en savoir davantage, faites: « basename --help ».
/home/jean/Scripts/cvt_lower.sh: command substitution: line 18: erreur de syntaxe : fin de fichier inattendue
basename: opérande surnuméraire `l\'eclipse'
Pour en savoir davantage, faites: « basename --help ».
/home/jean/Scripts/cvt_lower.sh: command substitution: line 18: erreur de syntaxe : fin de fichier inattendue
/home/jean/Scripts/cvt_lower.sh: command substitution: line 18: erreur de syntaxe : fin de fichier inattendue
mv: opérande du fichier cible manquant après `Centralité'
Pour en savoir davantage, faites: « mv --help ».
/home/jean/Scripts/cvt_lower.sh: command substitution: line 18: erreur de syntaxe : fin de fichier inattendue
mv: opérande du fichier cible manquant après `club51-2004.pdf'
Pour en savoir davantage, faites: « mv --help ».
basename: opérande surnuméraire `de'
Pour en savoir davantage, faites: « basename --help ».

Etc...

Ce soir je rends les armes !

Hors ligne

#11 Le 23/08/2007, à 13:50

JoelS

Re : Mon premier script !!

jeanr a écrit :
jean@FamilleRouche:~$ cd ~/TestAstro
jean@FamilleRouche:~/TestAstro$ ~/Scripts/cvt_lower.sh
/home/jean/Scripts/cvt_lower.sh: line 1: #!/bin/bash: Aucun fichier ou répertoire de ce type

Je suis surpris par la première ligne: dans ton post, il semble qu'il y ait un caractère avant le # alors que quand je cite ton post, ce caractère disparaît dans la zone d'édition, mais réapparaît dans mon propre post. Si je fais un copier-coller directement avec le curseur+clavier dans un fichier, je récupère bien un caractère bizarre. Peut tu vérifier par cat -vet ~/Scripts/cvt_lower.sh s'il ne traine rien à cet endroit (c'est quand même pas un bug de PunBB ????).

Si oui, alors c'est normal que le reste plante.

Si non fais le test suivant: ouvres avec un éditeur (sous Ubuntu hein :-))  un fichier toto.sh et tapes:

#!/bin/babash
echo coucou

sauvegardes, rends le fichier exécutable puis:

joel@prunelle:~$ ./toto.sh 
bash: ./toto.sh : /bin/babash : mauvais interpréteur: Aucun fichier ou répertoire de ce type
joel@prunelle:~$ echo $SHELL
/bin/bash

Tu voit que le message d'erreur de bash quand il ne trouve pas l'interpréteur à associer à un script est différent de celui que tu as. Vérifies ça et donnes nous le résultat.

Hors ligne

#12 Le 23/08/2007, à 15:12

alexduf

Re : Mon premier script !!

je pense aussi à la présence de caractères windowsiens qui viennent perturber l'interpréteur.

As-tu passé la commande dos2unix sur ton script?

Hors ligne