[BASH] droles de variables :-)

tlep Messages postés 597 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
J'ai regardé le code shell de ce petit logiciel :

http://cutekiller.free.fr/cutekiller-0.1.tar.bz2

Et je vois qu'il utilise des variables dont je ne comprends pas le sens:

if "z${1:0-4:4}" != "z.001" ;then
echo cutekiller: input file must end in .001
exit 2
fi

${1:0-4:4} correspond à $1 (l'argument passé en paramètre du script), mais 0-4:4 ?

Puis :
BODY="${1/%001}"

Suivi de déclaration d'une variable HEADER:
HEADER=`head -c8 "$1"`

utilisée comme suit :
OUTNAME="$BODY${HEADER/ *}"

puis :

for NUM in `seq -f%03.f 002 ${HEADER:5:3}` ; do
cat "$BODY$NUM" >> "$OUTNAME" || { rm "$OUTNAME" && exit 5;}
done

Auriez-vous des éclaircissements ?

Merci ;-)
Configuration: Windows XP
Firefox 2.0.0.2

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    man bash : Expansion et Remplacement de paramètres

    ;-))
    -1
  2. Phiphi57 Messages postés 789 Date d'inscription   Statut Contributeur Dernière intervention   295
     
    Salut,

    une partie tres approximative d'un bout de réponse...

    le "%" normalement, c'est pour enlever une chaine a partir de la fin :
    ex :
    export test=toto.dat
    echo $test
    echo ${test%.dat}
    par contre, le "/%", ca a l'air de rien donner chez moi... :s

    Phiphi
    -1
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      jp@MDK:~/tmpfs ssh$ set coin.001
      jp@MDK:~/tmpfs ssh$ echo $1
      coin.001
      
      jp@MDK:~/tmpfs ssh$ echo ${1/%001}
      coin.
      
      jp@MDK:~/tmpfs ssh$  echo ${1%001}
      coin.
      
      jp@MDK:~/tmpfs ssh$
      Le slash est optionnel ;-))
      -1