Vincent-Xavier JUMEL wrote:
> Le 22 avril à 12:26 Thomas Pedoussaut a écrit
>> Laurent Menase wrote:
>>> si tu veux utiliser le resultat d'une commande utilise
>>> $( commande )
>>> ou
>>> ` commande ` - c'est le backquote et pas la doublequote-
>>> - le double crotte n'execute pas les commande, mais expand juste les
>>> parametres-
>>>
>> Je deconseille l'utilisation des backquotes. OK, $() prend un caractere
>> de plus, mais peut s'imbriquer facilement.
>>
> Sauf que $() est un bash-isme non normalisé par POSIX. Ce qui peut apporter
> des
> surprises désagréables
non $() n'est pas bashcentric et est definie par POSIX
- en fait POSIX shell est tres similaire au ksh88 sauf sur cetains
points de details concernant l'handling des trap dans les fonctions.
et la maniere de gerer ses sous process.
En fait seul le grand ancetre bourne shell ne connait pas $() et les
substitution de parametre avance comme ${x#pattern}
bash et Posix eux l'ont herite de ksh.
>> [ ~]$ foo=$(grep -c $(expr 2 + 2) /etc/passwd)
>> [ ~]$ echo ${foo}
>> 11
>>
>> De meme les {} sont plus longs a tapper, mais permettent de mieux lire
>> le script et de faire des trucs impossible sans comme mv ${fichier}
>> ${fichier}old.
> Quitte à conseiller l'utilisation de {} autant parler de trucs vraiment cool,
> comme <code>mv ${fichier} ${fichier/pattern/subst}</code> qui te permet par
> exemple d'effectuer un substitution de variable en remplaçant les occurences
> de
> pattern dans fichier par subst
Par contre ca n'est pas posix du tout
- mais alors pas du tout-
Posix connais les meme substitutions que bash sauf //
c'est pour cela d'ailleurs que dans mon exemple je rempacait
$(basename $fichier .txt )
par
f2=${fichier##*/}
f2=${f2%.*}
l'avantage est de ne pas forker une commande, mais de tout faire en shell.
>
> Shellement, Vx
Posixement et Kornement.
_________________________________
Linux mailing list
[email protected]
http://lists.parinux.org/mailman/listinfo/linux