Votre aide pour un script shell

alalah que c dur de se remettre au script shell après pls années de non pratique ;-)

voilà en gros j'ai un script qui marche bien pour 1 fichier passé en paramètre et maintenant je voudrai qu'il marche pour plusieurs fichiers à la fois !
mon script pour 1 fichier:

var=`sed -n 1p $1` && sed -i '1d;s/.*/'$var'&/' $1

il recopie la 1ère ligne de mon fichier devant chaque ligne; c'est ok.
maintenant je voudrais qu'il fasse la même chose pour tous les fichiers qui commence par $1
j'ai essayé:

var=`sed -n 1p $1*` && sed -i '1d;s/.*/'$var'&/' $1*

mais ça marche pô !? je me doute qu'il y a un pb avec la variable mais... !?
vous avez une idée svp ?
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. Modérateur
    Salut,

    pour tous les fichiers qui commence par $1
    $1 est un paramètre (le premier).
    Si tu veux désigner tous les paramètres il faut employer "$*" (ou $@).

    Mais même avec ça je doute que ton script marche :-(

    Affiche-nous plutôt la liste des fichiers (ls le_rep_où_sont_les_fichiers) que tu voudrais passer en paramètres.
    0
    1. salut jipicy,

      ben en fait dans mon répertoire j'ai pls fichiers: adh_cic, adh_adf, adh_imp, etc... tous commencent par adh...
      et je voudrais que mon script fasse pour chacun d'eux (sans que j'ai tous à les rentrer en paramètre, juste 'adh' ) l'opération de prendre la 1ère ligne pour la mettre devant chaque ligne.
      merci de ton aide,
      A+
      fab
      0
      1. Modérateur
        Re-

        Essaie un truc du genre :
        for fich in adh_*
        do
        var=`sed -n 1p $fich`
        sed -i '1d;s/.*/'$var'&/' $fich
        done
        ;-))
        0
        1. OK thanks a lot !
          et si je peux te demander un truc encore: comment faire pour que ça soit plus "générique", dans le sens ou je voudrais que ça marche pour tous les fichiers qui commence par adh_* mais aussi pour tous les fichiers pres_* ou tous les fichiers cot_*, genre je donne adh ou pres ou cot en paramètre de mon script ....
          tu vois ? ;-)
          0
          1. Modérateur
            Re-

            En supposant que tu ne passes qu'un seul paramètre à ton script :
            for fich in $1*
            do
            var=`sed -n 1p $fich`
            sed -i '1d;s/.*/'$var'&/' $fich
            done
            ;-)
            0
            1. merci ! t mon dieu du shell ! ;-)
              à la prochaine ;-)
              0