Partage
  • Partager sur Facebook
  • Partager sur Twitter

[script shell ] ... sur les boucles

    27 mai 2017 à 0:31:35

    Bonjour à tous,

    Je suis en train de suivre actuellement le chapitre sur les boucles dans le cours sur Linux.

    Et il y a un petit exercice à faire:

    À vous de jouer ! Essayez de créer un script multirenommage.sh, reposant sur ce principe, qui va rajouter le suffixe -old… uniquement aux fichiers qui correspondent au paramètre envoyé par l'utilisateur!

    ./multirenommage.sh *.txt

     Si aucun paramètre n'est envoyé, vous demanderez à l'utilisateur de saisir le nom des fichiers à renommer avec read.

    Voici le script que j'ai fait:

    #!/bin/bash
    
    if [ -z $1 ]
    then
    	read -p 'Entrez le nom des fichiers: ' fichier
    
    	for variable in `ls`
    	do
    		if [ $variable = $fichier ]
    		then
    			mv $variable $variable-old
    		fi
    	done
    
    else
    
    for variable in `ls`
    do
    	if [ $variable = $1 ]
    	then
    		mv $variable $variable-old
    	fi
    done
    
    fi 



    Le script a l'air de fonctionner.

    Pouvez vous me donner votre avis sur ce que j'ai fait?

    Merci à tous.









    -
    Edité par saddly 27 mai 2017 à 0:51:28

    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2017 à 2:24:37

      salut,

      pourquoi ne testes-tu pas ton script ? tu verrais qu'il ne fait pas ce qui est demandé.
      parce que les boucles n'utilisent pas le paramètre positionnel.

      avant que le script soit lu, *.txt va être développé en la liste des fichiers qui finissent par .txt, et c'est cette liste qui sera passée en paramètres positionnels au script.

      si tu veux que le script prenne comme paramètre positionnel, littéralement, *.txt, il faut protéger l'astérisque pour empêcher le développement.

      de plus, il faut toujours mettre des guillemets autour des variables, jusqu'à ce que tu saches pourquoi tu ne veux pas en mettre.

      enfin, parser la sortie d'une substitution de commande est rarement une bonne idée, et ls en particulier, il est préférable d'utiliser les globs.

      -
      Edité par dantonq 27 mai 2017 à 7:01:38

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

      [script shell ] ... sur les boucles

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown