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

Script qui ne fonctionne plus ...

2 réponses
Avatar
Olivier V
Bonjour,

Il y a quelques mois, Ph. Ivaldi m'avait fourni un script permettant de
déterminer si un fichier donné contient les chaînes de
caractères "\begin{pspicture}" ou "\includegraphics{.eps}".

Le voici :

#!/bin/sh
if sed -r 's/([^\]|^)%.*//g' "$1" |\
awk -v FS="^Z" "/\\\begin{document}/,/\\\end{document}/" |\
grep -Eq "(^ *\\\begin{pspicture})|(\\\includegraphics{.*\.eps})"; then
touch /tmp/contientpspicture
echo "oui pstpdf "
else # on teste l'existence avant de supprimer...
[[ -e /tmp/contientpspicture ]] && rm -f /tmp/contientpspicture
echo "non pas pstpdf "
fi

Mais bizarrement, suite à une mise à jour sur un portable (Kubuntu 6.06),
j'obtiens l'erreur suivante, alors qu'il fonctionnait très bien avant :

$ contient_pstpdf essai.tex
/home/meloli/bin/latex/contient_pstpdf: 11: [[: not found
non pas pstpdf

Le problème semble donc venir de [[ -e /tmp/contientpspicture ]]
qui, si ma mémoire est bonne, est censé tester la présence du fichier avant
de le supprimer.

Au pire, je supprimerai cette partie, mais malgré tout
quelqu'un peut-il résoudre ce problème ?

Merci.

Olivier V

2 réponses

Avatar
Luc.Habert.00__arjf
Olivier V :

$ contient_pstpdf essai.tex
/home/meloli/bin/latex/contient_pstpdf: 11: [[: not found
non pas pstpdf


Remplace ce « [[ » par « [ » et le « ]] » fermant par « ] ». Ou alors,
remplace la première ligne par « #!/bin/bash ». Le « [[ ... ]] » est une
construction de bash et non du sh standard. Ça marchait avant, probablement
parce que /bin/sh était un symlink pointant vers bash. Avec l'upgrade, c'est
peut-être devenu un symlink pointant vers dash, ou alors, le mode sh de bash
est devenu plus strict qu'avant avec la nouvelle version.

Avatar
Olivier V

Remplace ce « [[ » par « [ » et le « ]] » fermant par « ] ». Ou alors,
remplace la première ligne par « #!/bin/bash ». Le « [[ ... ]] » est une
construction de bash et non du sh standard.


C'était ça. Merci.

Olivier V