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.
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