2009-05-23 11 views
2

J'ai écrit un script shell pour convertir la source HTML en texte brut en utilisant lynx.Conversion HTML en texte dans un script shell

Ici, il est: « Lyns n'est pas installé »

#!/bin/sh 

if [ -f = "/usr/bin/lynx" ] 
    then 
    if [ -f = "$1" ] 
     then 
     lynx -dump $1 > $2 
     else 
     echo "File $1 does not exist!" 
    fi 
    else 
    echo "Lynx is not installed!" 
fi 

Maintenant, bien que le lynx existe dans le répertoire à droite, et je passe bons arguments que je reçois soit message ou (si je commente le premier test) "Fichier $ 1 n'existe pas!". Je ne suis pas trop bon pour sh alors quelqu'un pourrait me dire ce qui ne va pas avec le script?

Répondre

4

Je pense que le premier cas est erroné et devrait être remplacé par

if [ -f /usr/bin/lynx ] 
+2

La même chose vaut pour la seconde, je pense. –

+0

Oui, bien sûr :) –

2

Essayez de supprimer les « -f = » et de le garder juste « -f »

0

Il est comme ça maintenant:

#!/bin/sh 

if [ -f /usr/bin/lynx ] 
    then 
    if [ -f $1 ] 
     then 
     lynx -dump $1 > $2 
     else 
     echo "File $1 does not exist!" 
    fi 
    else 
    echo "Lynx is not installed!" 
fi 

Et le problème avec les tests a disparu, mais maintenant je reçois cette erreur:

ligne 7: 2 $: redi ambiguë rect

bien

lynx -dump site.html> site.txt fonctionne très bien si elle est exécutée à partir de la console

+0

Vous n'avez pas vérifié que vous avez fourni deux noms de fichiers - donc $ 2 est vide et '>' ne dit pas où rediriger la sortie, donc c'est une redirection ambiguë. Incidemment, sur ma machine, lynx est installé dans/usr/gnu/bin ou/usr/local/bin (et les deux sont sur mon PATH). –

+0

Vous pouvez réduire cela à: exec $ {LYNX: -lynx} -dump $ {1 :?}> $ {2 :?}; cela ferait le même travail à peu près aussi efficacement (bien que les messages d'erreur par défaut soient un peu grossiers). –

0
LINKS=`which links` 
if [ -x $LINKS ]; then 
    ... 
else 
    ... 
endif 

si ce n'est pas installé dans/usr/bin /? Et si pour une raison quelconque ce n'est pas exécutable?

+0

'liens' est 'lynx'! : D –

+0

bien, les liens sont toujours mieux alors lynx ... je l'aime mieux ;-) – elcuco

+0

est le support -dump? Je ne pense pas –