Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

backquote vs $()

2 réponses
Avatar
Ph. Ivaldi
Bonjour,

Dans le code suivant (vu sur le net):
8<------8<------8<------8<------8<------8<------8<------8<------8<------
location=$(dirname "$1")
basefname="${location}/`basename "$1" .tex`"
8<------8<------8<------8<------8<------8<------8<------8<------8<------

Y-a-t-il une raison particulière à utiliser des "backquotes" pour le
basename au lieu de $() ?

Aussi, pour avoir basefname, j'aurai plutôt écrit:
basefname="${1%.tex}"

C'est mieux, ou me goure-je ?
(note: le code est sensé tourné sur un Mac)

Merci,
--
Philippe Ivaldi.
http://www.piprime.fr/

2 réponses

Avatar
Stephane CHAZELAS
2009-09-18, 10:01(+02), Ph Ivaldi:
Bonjour,

Dans le code suivant (vu sur le net):
8<------8<------8<------8<------8<------8<------8<------8<------8<------
location=$(dirname "$1")
basefname="${location}/`basename "$1" .tex`"
8<------8<------8<------8<------8<------8<------8<------8<------8<------

Y-a-t-il une raison particulière à utiliser des "backquotes" pour le
basename au lieu de $() ?



Non, et d'ailleurs, en l'occurrence, yaurait une bonne raison
d'utiliser $() instead. Ca devrait etre:

location=$(dirname -- "$1")
basefname="${location}/`basename -- "$1" .tex`"
basefname="${location}/$(basename -- "$1" .tex)"
basefname=$location/`basename -- "$1" .tex`
basefname=$location/$(basename -- "$1" .tex)

Note que $() est POSIX mais pas Bourne.


Aussi, pour avoir basefname, j'aurai plutôt écrit:
basefname="${1%.tex}"

C'est mieux, ou me goure-je ?



Oui, ${x%y} n'est pas Bourne non-plus.

Il y a une difference pour "x.tex" qui devient ./x dans un cas
et x dans l'autre.

Note aussi que /x.tex devient //x avec dirname+basename et ca
peut poser probleme.

(note: le code est sensé tourné sur un Mac)



censé


--
Stéphane
Avatar
Ph. Ivaldi
Merci.
--
Philippe Ivaldi.
http://www.piprime.fr/