[BASH] droles de variables :-)

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. Contributeur
    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. Modérateur
      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 ;-))