web-dev-qa-db-fra.com

Comment écrire un script pour générer un fichier html?

Qu'est-ce que je fais mal dans ce script?

#!/bin/bash

cat > /tmp/flash-viewer.htm <<- _EOF_
<HTML><HEAD><TITLE>Flash Viewer</TITLE></HEAD><BODY>
<object width=\"1280\" height=\"720\" data=\"$1\"></object>
</BODY></HTML>
_EOF_

if [ -n $BROWSER ]; then
  $BROWSER '/tmp/flash-viewer.htm'
Elif which xdg-open > /dev/null; then
  xdg-open '/tmp/flash-viewer.htm'
Elif which gnome-open > /dev/null; then
  gnome-open '/tmp/flash-viewer.htm'
else
  echo "Could not detect the web browser to use."
fi

Le script donne ces erreurs:

joe@U13:~/Script$ ./html-flash-viewer.sh "/home/joe/video.swf"
/tmp/flash-viewer.htm: line 1: <HTML><HEAD><TITLE>Flash: command not found
/tmp/flash-viewer.htm: line 2: <object: command not found
/tmp/flash-viewer.htm: line 3: </BODY></HTML>: No such file or directory

Y a-t-il une sorte de séquence d'échappement qui me manque? J'ai déjà essayé d'utiliser\pour échapper aux crochets LT/GT et de placer le code HTML entre guillemets simples et doubles. Chacun produit des erreurs similaires.

1
Sienile

Si $BROWSER est vide, [ -n $BROWSER ] devient simplement [ -n ]. Cela vérifie si -n a une longueur non nulle, ce qui est toujours vrai.

Ensuite, $BROWSER '/tmp/flash-viewer.htm' est exécuté, ce qui correspond en réalité à '/tmp/flash-viewer.htm' si $BROWSER est vide.

Utilisation

if [ -n "$BROWSER" ]; then

afin qu'il y ait toujours un deuxième argument.

Pour connaître le chemin exact de votre navigateur, utilisez which <browser>, en remplaçant <browser> par le navigateur avec lequel vous essayez d'ouvrir le fichier.

Par exemple,

which firefox

retournerait /usr/bin/firefox, de sorte que vous pourriez faire:

BROWSER=/usr/bin/firefox
5
Florian Diesch