Envoyé par ripat
je n'ai pas dit ça.
j'en suis resté à l'évaluation arithmétique par le shell.![]()
Bonjour,
ma petite contribution
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $(IFS=$':'; set `<fichier.tst`; echo $#)
Bonjour,
le signe dollar n'est pas utile.
pense que $LISTE peut contenir un tiret qui fera planter set : il faut lui indiquer la fin des options avec deux tirets set -- $var.
il n'a pas été question de fichier.tst.
le code ne tient pas compte de l'absence de :, et les champs vides au début et/ou à la fin de la variable.
Bonjour N_BaH,
Merci pour ces remarques, donc en tenant compte de celles-ci:
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $ LISTE=':apres un champ initial vide:un autre champ:::apres deux champs et avant un dernier vides:' $ NF=$(IFS=':'; set -- `echo " $LISTE "`; echo $#) $ echo $NF 7 $ LISTE='sans les 2 points' $ NF=$(IFS=':'; set -- `echo " $LISTE "`; echo $#) $ echo $NF 1
Oui, je sais, on est dans le même cas que pour "tr"...
Voici une version qui corrige le problème (même si je trouve ta méthode plus "propre")
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for str in '' "a" "a:" "a:b" "a:b:c" do echo $(IFS=':'; set -- `[ -z "$str" ] || echo " $str "`; echo $#) done 0 1 2 2 3
Partager