Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme script bash

script pour renommer des fichier

Sujet résolu
25 octobre 2014 à 12:48:32

Bonjour,

j'ai essayer de créer un petit script pour renommer plus rapidement mes fichier, seulement voila quand j'essaye d’exécuter le script, il me donne une erreur de syntaxe, voici l'erreur :

./renomFichier.sh: ligne11: Erreur de syntaxe près du symbole inattendu « done »
./renomFichier.sh: ligne11: `done'

Et voici mon script :

#! /bin/bash

cd /media/INTENSO/Films/

for fichier in `ls`
  do
    echo -e $fichier
    echo -e "Entrez le nouveau nom du fichier :\n"
    read -p '' nouvNom
    if [ -n $nouvNom ] then mv -i -v $fichier $nouvNom fi
done


J'en profite également pour demander comment je peut faire pour échapper les espaces dans ma commande ls, car quand je commente la ligne if, le script s’exécute mais ne lit pas entièrement le nom de mon fichier, il sépare les noms a chaque espaces :/

merci d'avance :)

  • Partager sur Facebook
  • Partager sur Twitter
26 octobre 2014 à 21:40:35

Salut,
Pour corriger ton erreur passe ton if sur plusieurs ligne par exemple
if [ -n $nouvNom ]
then
    mv -i -v $fichier $nouvNom
fi 
ou sur une ligne ligne avec de ";"
if [ -n $nouvNom ]; then mv -i -v $fichier $nouvNom; fi

-
Edité par lekaf974 26 octobre 2014 à 21:43:58

  • Partager sur Facebook
  • Partager sur Twitter
Arch : "Keep It Simple, Stupid"
26 octobre 2014 à 21:48:24

for fichier in *
do
  ...
done

c'est plus simple que de passer par ls.

-
Edité par michelbillaud 26 octobre 2014 à 21:51:11

  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2014 à 20:48:53

Super, ca marche, et le * fonctionne mieu que le ls effectivement.

Merci :)

  • Partager sur Facebook
  • Partager sur Twitter
1 novembre 2014 à 12:28:09

Non seulement ça marche mieux, mais "ls" ne fait pas du tout le boulot, depuis que sous Unix, on a des systèmes de fichiers qui acceptent ses espaces et autres caractères bizarres dans les noms de fichiers.

Donc se méfier comme la peste des cours et tutoriels sur le shell qui ont souvent été écrits au bon vieux temps où on n'avait pas ce genre d'emmerdements.  Et dont les exemples foirent lamentablement.

Par exemple sur http://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/les-conditions-4

l'exemple pour tester si deux paramètres d'un script sont égaux est

if [ $1 = $2 ] ...

qui ne marche pas. Y a qu'à essayer pour voir

$ a="un deux"
 
$ if [ $a = $a ] ; then echo oui ; fi
bash: [: trop d'arguments

alors que

$ if [ "$a" = "$a" ] ; then echo oui ; fi
oui






  • Partager sur Facebook
  • Partager sur Twitter