Como eu escrevo um script para gerar um arquivo html?

1

O que estou fazendo de errado neste roteiro?

#!/bin/bash

cat > /tmp/flash-viewer.htm <<- _EOF_
<HTML><HEAD><TITLE>Flash Viewer</TITLE></HEAD><BODY>
<object width=\"1280\" height=\"720\" data=\"\"></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

O script fornece esses erros:

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

Existe algum tipo de seqüência de escape que estou perdendo? Eu já tentei usar \ para escapar dos parênteses LT / GT e colocar o html entre aspas simples e duplas. Cada um produz erros semelhantes.

    
por Sienile 23.05.2014 / 14:52

1 resposta

5

Se $BROWSER estiver vazio, [ -n $BROWSER ] se tornará apenas [ -n ] . Isso testa se -n tem comprimento diferente de zero, o que é sempre verdadeiro.

Em seguida, $BROWSER '/tmp/flash-viewer.htm' é executado, o que na verdade é apenas '/tmp/flash-viewer.htm' se $BROWSER estiver vazio.

Use

if [ -n "$BROWSER" ]; then

para que haja sempre um segundo argumento.

Para descobrir o caminho exato do seu navegador, use which <browser> , substituindo <browser> pelo navegador com o qual você está tentando abrir o arquivo.

Por exemplo,

which firefox

retornaria /usr/bin/firefox , então você poderia fazer:

BROWSER=/usr/bin/firefox
    
por Florian Diesch 23.05.2014 / 15:15