[BASH] droles de variables :-)

Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 21 mars 2007 à 14:06
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 21 mars 2007 à 17:25
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 ;-)
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 mars 2007 à 15:43
Salut,

man bash : Expansion et Remplacement de paramètres

;-))
-1
Phiphi57 Messages postés 789 Date d'inscription samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
21 mars 2007 à 15:44
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 mars 2007 à 17:25
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